"PHP" / Говнокод #8380 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
function getDirName($artistId)
    {
        $dirName = 1;
        $startNumber = 500;
        $result = false;

        while(!$result) {
            if ($artistId <= $startNumber) {
                $result = true;
            }
            else {
                $dirName++;
                $startNumber += 500;
            }
        }

        return $dirName;
    }

Весь прикол такой, что фотки на сервере лежат по 500 штук и зная id артиста можно узнать в какой из директории лежит его фотка. Вместо того чтобы написать, что то типа - $dirName = round($artistId / 500); я выдумал вот такую несуразицу :)

Запостил: dev6alexander dev6alexander, (Updated )

Комментарии (20) RSS

    • Нет Вы не поняли, картинки для уменьшения нагрузки на сервер были разнесены на разные директории. Т.е у артистов у которых id менее или равен 500 фотки хранятся в в директории с именем - 1. И так далее:
      1,2,3,etc
      Ответить
      • все равно не понял, как картинки для уменьшения нагрузки на сервер могут быть разнесены на разные директории?
        имхо один хрен, их там 10 или 1000 в директории.
        а для уменьшения нагрузки нужно разносить пхп-код, бд и статичные файлы по разным серверам, разве нет?
        Ответить
        • С разносом данных согласен. Но в данном случае пока нет средств на это 🙁
          А насчет кол-ва файлов - попробуйте в одну директорию положить примерно 100 000 файлов и более. апач будет страшно тормозить при прямом обращеннии к ним. (насчет Nginx напоминать не надо)
          Ответить
          • > попробуйте в одну директорию положить примерно 100 000 файлов и более. апач будет страшно тормозить при прямом обращеннии к ним.
            попробовал - скопировал одну картинку на 100 000 файлов, положил в директорию апача и попробовал достучаться до 100 000 ого через апач - он и глазом не моргнул, выдал картинку, не показывая при этом дисковой активности
            Ответить
        • Резон есть: git, к примеру, воздаёт для хранения объектов каталоги (имя из двух символов по первым символам хэша) как раз с целью повышения производительности.
          Ответить
          • думаю, таким образом так повышается производительность отслеживания изменений, а не скорость доступа по известному пути
            Ответить
            • Скорость доступа к файлам в каталоге уменьшается при увеличении количества этих файлов. В NTFS логарифмически, в ext3 порядка роста не знаю.
              Ответить
              • теоретически да, это и понятно, но практически, думаю, замедление вовсе не по этой причине - только если хард пора увольнять
                Ответить
            • За счёт чего, по вашему, увеличится производительность отслеживания изменений?
              Ответить
        • по-моему, это просто пиздец головного мозга

          там небось mod_rewrite и index.php который костылит все функции httpd, а теперь схватились за головку - НАГРУЗКА
          Ответить
          • вполне возможно, что, для полного счастья, статика отдается скриптом
            Ответить
        • В остальном с вами согласен: это скорее тонкая микрооптимизация, сначала нужно устранять проблемы на других уровнях системы.
          Ответить
  • с самого начала мой вопрос был такой: зачем фотки кидать в кучу, а потом их искать, если их можно распихать по папкам таким образом, что папка известна из имени файла?
    например, по алфавиту - скажем a\a\c для файлов aac*, или точно так же для числовых идентификаторов
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8