PHP самый эффективный способ перечислить файлы в очень большом каталоге

Возможные дубликаты:
Получить файлы внутри каталога
PHP: scandir() работает слишком медленно

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


person John    schedule 30.03.2011    source источник
comment
я пробовал эти методы - они отлично работают с тысячей или около того файлов, но требуется возраст, чтобы вернуть сотни тысяч файлов в массив   -  person John    schedule 30.03.2011
comment
@John, если вы действительно уже пробовали scandir, opendir, glob и итераторы, пожалуйста, обновите свой вопрос, чтобы указать это. возможно, даже добавить некоторые коды и номера производительности. нет смысла заставлять нас повторять все методы, которые можно легко найти в десятках других вопросов, задающих то же самое.   -  person Gordon    schedule 30.03.2011
comment
Не рекомендуется иметь сотни тысяч файлов в каталоге на любой известной мне операционной платформе... обычная практика — всегда разбивать их по подкаталогам.   -  person Mark Baker    schedule 30.03.2011


Ответы (3)


Я рекомендую использовать DirectoryIterator или RecursiveDirectoryIterator.

person eisberg    schedule 30.03.2011
comment
Я рекомендую FilesystemIterator вместо DirectoryIterator. - person salathe; 30.03.2011
comment
@salathe +1 См. также вопрос Разница между DirectoryIterator и FileSystemIterator. Ваше здоровье ;-) - person oHo; 29.09.2014

Я не сравнивал их, но ваши другие варианты

glob() — http://php.net/manual/en/function.glob.php

opendir() — http://www.php.net/manual/en/function.opendir.php

person JohnP    schedule 30.03.2011
comment
какой из этих двух (glob или opendir) работает лучше? - person kta; 17.01.2014
comment
opendir быстрее: phparch.com/2010/04/putting -glob-to-test - person Picard; 30.03.2017

person    schedule
comment
Все дело в том, что этот метод слишком медленный - person Val Redchenko; 23.11.2012
comment
@ValRedchenko Я бы не был так уверен в этом утверждении: - person topherg; 09.07.2013