【问题标题】:What kind of folder structure is best for performance?什么样的文件夹结构最适合性能?
【发布时间】:2011-11-24 01:00:52
【问题描述】:

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

  1. 将所有文件保存在一个名为 uploads 的文件夹中

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

  3. 与 #2 相同,但不检查是否存在以用户 ID 命名的文件夹,PHP 或 Linux 似乎知道如果一个已经存在就不要创建一个并使用存在的文件夹。

  4. 更好的东西

那么从性能的角度来看,这些会更好。我真的很关心这里的速度。如果我在一个文件夹中有数十万张图像,那么检索其中一张似乎需要相当长的时间。而且我不确定将它们组织到子文件夹中是否会使事情变得更好。

【问题讨论】:

  • 无论你有几个根文件夹和很多文件,还是有很多根文件夹但没有那么多文件,问题都会略有不同。我自己的想法是,您应该在测试环境中使用脚本调查您所面临的场景以找到最佳解决方案。

标签: php image filesystems


【解决方案1】:

我使用如下结构:

/**
   * 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多