Это довольно легко сделать, не потребляя много оперативной памяти (если по какой-то причине вам не нужно читать во всех файлах). Я много раз делал это программное обеспечение, и он работает хорошо.
Используйте opendir
, чтобы открыть каталог, который хотите изучить.
Затем используйте readdir
в цикле, чтобы читать имена файлов по одному. readdir
обрабатывает файлы в том же порядке, в котором они хранятся в объекте каталога файловой системы. Это полезно для каталога такого размера, как тот, который вы упомянули, потому что он не будет пытаться сортировать имена файлов. (Там другая апи называется scandir
Это один делает то, что имена файлов;. Не использовать его в вашем приложении много-файлов.)
Каждый раз, когда вы звоните readdir
это дает вам имя следующего файла в каталоге , Вот документация; примеры полезны. http://www.php.net/manual/en/function.readdir.php
После того, как у вас есть имя каждого файла, вы можете эффективно искать различные атрибуты файла с помощью stat
. http://www.php.net/manual/en/function.stat.php Это расскажет вам полезные вещи, такие как время создания, длина, владелец.
Если вы на системе * NIX (как BSD или Linux), вы можете очень быстро переместить файл в другой каталог на одной и той же файловой системе без его копирования, с помощью link
, а затем unlink
. Если вы только unlink
, это удалит его.
Одна вещь, чтобы иметь в виду здесь: вы должны относиться порядок, в котором readdir
дает вам обратно ваши имена файлов формально непредсказуемы или случайного. Они не гарантированы в любом порядке. Я был пойман этим, потому что удаленные (NFS) файловые системы обрабатывали порядок по-другому, чем локальные файловые системы, в нескольких средах, которые я использовал.
Спасибо за ваш комментарий, я хотел не загружать полный список файлов, я надеялся, что это может быть как можно меньше. Я полагаю, что нет способа использовать индекс файловой системы с PHP? –