什么样的文件夹结构最适合性能?

时间:2011-11-24 01:00:53

标签: php image filesystems

我正在建立一个允许用户上传其个人资料图片的网站。我想知道哪些是更好的选择(所有这些情况下的文件名都是随机生成的字符串):

  1. 将所有文件保存在名为uploads

  2. 的单个文件夹中
  3. 创建一个以用户的数字用户ID命名的文件夹,并将所有图像放在自己的文件夹中。每次他们上传一个新图像时,我会检查(使用PHP)是否存在以他们的id命名的文件夹,如果是这样的话,不要创建一个新的目录,只是将图像放在现有的

  4. 与#2相同,但不检查是否存在以用户ID命名的文件夹,PHP或Linux似乎知道如果已经存在并且使用那个,则使用它。

  5. 更好的东西

  6. 从绩效的角度来看,哪些会更好。我真的很关心这里的速度。如果我在一个文件夹中拥有成千上万的图像,那么在许多文件夹中检索一个图像似乎需要相当长的时间。而且我不确定将它们组织到子文件夹中会使事情变得更好。

1 个答案:

答案 0 :(得分:0)

我使用以下结构:

/**
   * Calculate dir tree for object
   * Folders starts from 00 to FF (HEX) and can have just as
   * many subfolders (I think :)
   * @param $id - User ID
   * @param $type - Image category
   * @return string
   */
  function calculateDirTree($id, $type)
  {
      $hashUserID   = substr(hash('md5', $id), -4);
      $parentFolder = substr($hashUserID,0,2);
      $subfolder    = substr($hashUserID,2);    
      $basePath     = $type."/".$parentFolder.'/'.$subfolder.'/';

      return $basePath;
  }  

看起来像others also find this way a good way