Случайны показ картитнок

Статус
В этой теме нельзя размещать новые ответы.
Не везде glob полезен и лучше :)
Если в папке хотя бы 1000 файлов, то он уже заметно нагружает сервер в отличие от перебора или указания точного место положения файлов.
Проверено на личном опыте.
Извините, читайте тз и делайте соответственно :) а так да, не везде и php подходит :)

P.S. Кстати насчет личного опыта можно поподробнее. интересны тесты когда GNU C функции грузят больше чем цикл с перебором. Реально интересно.
Провел тесты, для прохода по каталогу по маске * для 2208 файлов скорость глоба меньше чем у риддира примерно в два раза 0.008 против 0.004, при отключенной сортировке 0.006. При работе с маской *.jpg ~90% файлов скорость составила 0.003. насколько упадет скорость риддира при использовании маски я молчу.
Код:
[medvoodoo@medvoodoo ~]$ php --version
PHP 5.2.6 (cli) (built: Sep 13 2008 11:13:28)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
 
Объясню для любопытных офтопом в этой теме.
1. Посмотрите как работает glob что он делает? Перебирает рекрусивно папку возвращая массив с данными о путях файлов.
Если мы обрабатываеваем 10к файлов при пути /opt/lampp/htdocs/site1/test/file1.php, получается у нас в 1 строке 39 символов * 10к = 39к считаем в килобайтах это размер занимаемой памяти для 1 переменной при 1 интерации.
По другому вы никак не сможете обработать каждый файл с минимальной потребностью памяти.
2. readir при использовании
PHP:
while ($file = readdir($handle)) {}
Позволяет нам через переменную $file хоть 100к обработать файлов при этом в памяти будет находиться не больше этих 39 символов.

Вывод понятен думаю?

Кстати по поводу опыта, кто любит делать на файлах. Давали мне скрипт один переписать там на файлах была админка и в ней было около 100к файлов в 1 папке и при обращении к этой папке сервер подвисал как потом поняли что-то с файловой системой связано было, типа в одной папке столько файлов не желательно держать.
Дополнение к оффтопу :)
 
Объясню для любопытных офтопом в этой теме.
Если мы обрабатываеваем 10к файлов...
Ну это как с 100 и более метровыми файлами и использованием fread, но это скорее исключение, лично я не встречался с задачами когда нужно было перебрать 10 000 файлов в цикле за раз, т.е. такие необходимости были, но их намного проще было решить средствами popen bash т.к. в 99% случаев это разовые задачи, типа смен размеров рисунков в каталоге под новый дизайн. В правильно разработанной системе такой файлопомойки быть не должно :)
Кстати по поводу опыта, кто любит делать на файлах. Давали мне скрипт один переписать там на файлах была админка и в ней было около 100к файлов в 1 папке и при обращении к этой папке сервер подвисал как потом поняли что-то с файловой системой связано было, типа в одной папке столько файлов не желательно держать.
Дополнение к оффтопу :)
Хм, а можно поточнее тип FS? EXT3 жрет на ура и не давится, если фат то вполне может быть, но там кажется физически нельзя в папку больше определенного предела запихнуть.
 
Хм, а можно поточнее тип FS? EXT3 жрет на ура и не давится, если фат то вполне может быть, но там кажется физически нельзя в папку больше определенного предела запихнуть.
Подробнее не помню это было пару лет назад. Но хорошо помню когда на фтп пытались зайти в папку сервер уходил медленно в даун при чтении :)
Тоже самое происходило и при запросе в эту папку скриптом на вывод.
 
вопрос, а если я хочу на каждую из картинок свою ссылку поставить? ... скажем картинки - каждая линкует на раздел форума....
как это реализовать?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху