English 中文(简体)
当你拥有数百万用户进入航空航天卫星接收系统服务器时,储存和取用图像的最快和最有效的方式是什么?
原标题:What is the fastest and most efficient way of storing and fetching images when you have millions of users on a LAMP server?

这里是我迄今为止所介绍的最佳方法,我想知道,是否有一种更好的方法(我确信有!)储存和篡夺数百万用户形象:

为了缩小名录的大小,避免不得不向非行发出任何额外呼吁,我使用根据用户独一无二的识别资料计算的封顶名录:

$firstDir =  ./images ;
$secondDir = floor($userID / 100000);
$thirdDir = floor(substr($id, -5, 5) / 100);
$fourthDir = $userID;
$imgLocation = "$firstDir/$secondDir/$thirdDir/$fourthDir/1.jpg";

用户识别号($userID)在1至数百万之间。

因此,如果我有用户识别编号7654321,例如,用户头版将存放在:

./images/76/543/7654321/1.jpg

For User ID 654321:

./images/6/543/654321/1.jpg

用户名54321 将:

./images/0/543/54321/1.jpg

用户名<编码>4321 将:

./images/0/43/4321/1.jpg

用户名321 将:

./images/0/3/321/1.jpg

用户识别码<21>。 将:

./images/0/0/21/1.jpg

用户名1 将:

./images/0/0/1/1.jpg

这确保有多达100 000 000 000名用户,我永远不会有1 000多个分局的名录,因此似乎保持了清洁和效率。

我在PHP(crc32)中使用了以下基准。 “h> 担任第二位主任,担任用户身份证的头3席之首,第三位主任担任下届3席,随意分发文件,但甚至如下:

$hash = crc32($userID);
$firstDir =  ./images ;
$secondDir = substr($hash,0,3);
$thirdDir = substr($hash,3,3);
$fourthDir = $userID;
$imgLocation = "$firstDir/$secondDir/$thirdDir/$fourthDir/1.jpg";

然而,这一“hash”方法比上文描述的方法慢,因此没有效果。

我接着又向前迈出了一步,在我的原始例子中找到了计算第三版的更快捷的方法(底(substr($userID, -5, 5)/100);:

$thirdDir = floor(substr($userID, -5, 3));

现在,这种变化是如何/在什么地方改变头10 000人。 用户识别仪储存起来,使大约3个名录有1个用户子或111个而不是100个,但是它的好处是更快的,因为我们不需要100个用户分立,因此我认为,长期而言,它值得。

一旦确定名录结构,我就计划如何储存实际的个人形象:例如,如果用户上载第二版,则该目录与第一版目录相同,但名称为<代码>2.jpg。 用户的缺省标本通常仅限1.jpg,这样,如果用户决定将其2分专题作为缺省标,则将重新命名为1.jpg1.jpg。 <代码>2.jpg。

最后但并非最不重要的是,如果我需要储存同一图像的多个大小,我将将其储存在用户名1上(例如):

1024px:

./images/0/0/1/1024/1.jpg
./images/0/0/1/1024/2.jpg

640px:

./images/0/0/1/640/1.jpg
./images/0/0/1/640/2.jpg

这一点令人不安。

因此,这种方法是否有任何缺陷? 如果是的话,请指出?

是否有更好的方法? 如果是的话,请说明?

在我着手实施之前,我希望确保我拥有保存和检索图像的最佳、最快、最高效的方法,以便我不必再作改动。

感谢!

最佳回答

http://www.em.ohchr.org。 什么事情是,这些图像在册子中分布得好、一致,如何产生出路短,如何减少命名公约(删除1.jpg至2.jpg)。 wow, 它工作。

例如,在你的草原解决方案中,这条道路完全建立在使用上,所有属于用户的图像都将放在同一个目录上。

Use the whole alphabet (lower and uppercase, if your FS supports it), not just numbers. Check what other softwares do, a good place to check hashed directy names is google chrome, mozilla, ... It s better to have short directory names. Faster to look up, occupies less space in your html documents.

问题回答

暂无回答




相关问题
Signed executables under Linux

For security reasons, it is desirable to check the integrity of code before execution, avoiding tampered software by an attacker. So, my question is How to sign executable code and run only trusted ...

encoding of file shell script

How can I check the file encoding in a shell script? I need to know if a file is encoded in utf-8 or iso-8859-1. Thanks

How to write a Remote DataModule to run on a linux server?

i would like to know if there are any solution to do this. Does anyone? The big picture: I want to access data over the web, using my delphi thin clients. But i´would like to keep my server/service ...

How can I use exit codes to run shell scripts sequentially?

Since cruise control is full of bugs that have wasted my entire week, I have decided the existing shell scripts I have are simpler and thus better. Here is what I have so far svn update /var/www/...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

热门标签