Используя PHP, мы можем искать шаблон имени файла в каталоге - PullRequest
2 голосов
/ 05 мая 2011

У меня есть папка с миллионами файлов на сервере

Имя файла будет LMN20110305.txt pattern.

Если я пытаюсь искать файлы только в апреле, я сейчас читаю каталог

получая имя файла и используя подстроку, проверяю, что оно больше или меньше

20110401 и 20110430

В этом случае оно будет читать весь каталог иэто занимает так много часов.Я тоже думаю о проверке даты создания.

Каким будет производительность glob - Поиск путей, соответствующих шаблону

У кого-нибудь есть лучшее предложение?

Глупые сомнения!Можно ли найти файлы без поиска по всему каталогу?

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

glob() будет работать нормально. По какой-то причине он в стандартной библиотеке, используйте его!

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

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

basedir/
|---/2011
|---/2010
etc.
1 голос
/ 05 мая 2011

Это больше проблема файловой системы, чем PHP. В PHP нет специальных методов для чтения каталога, кроме как через обычные системные вызовы. Вам необходимо изменить схему хранения, некую древовидную структуру, соответствующую распределению поступающих данных.

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