Какая структура папок лучше всего подходит для производительности? - PullRequest
0 голосов
/ 24 ноября 2011

Я делаю сайт, который позволяет пользователям загружать изображения для своих профилей.Я хотел бы знать, какой из них будет лучшим путем (имена файлов во всех этих случаях будут случайным образом сгенерированной строкой):

  1. Сохранить все файлы вотдельная папка с именем uploads

  2. Создайте папку с именем, соответствующим имени числового идентификатора пользователя, и поместите все их изображения в свою собственную папку.Каждый раз, когда они загружают новое изображение, я проверяю (используя PHP), существует ли папка, названная в честь их идентификатора, и если нет, создайте новый каталог и просто поместите изображения в существующий

  3. То же, что и # 2, но не проверяйте, существует ли папка, названная в честь идентификатора пользователя, PHP или Linux, кажется, не знают, чтобы создать ее, если она уже существует, и использовать ту, которая существует.

  4. Что-то лучше

Что бы это было лучше с точки зрения производительности.Я действительно обеспокоен скоростью здесь.Если у меня есть сотни тысяч изображений в одной папке, кажется, что поиск одного из многих занял бы довольно много времени.И я не уверен, что организация их в подпапки сделает вещи лучше.

1 Ответ

0 голосов
/ 25 января 2012

Я использую следующую структуру:

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

Похоже, другие тоже находят этот способ хорошим .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...