Целевой каталог содержит 10 миллионов текстовых файлов. using $a = scandir()
на веб-странице смертельно медленно. Требуется массив результатов менее чем за две секунды. Фильтрация не работает (сканирует весь список тоже)scandir() в php слишком медленно
все, что я могу думать о том, чтобы использовать программу perl
или c
для предобработки и х тысяч имен файлов вещи из целевого каталога в файл, помечать имена файлов в целевом dir выбрали с .pi
в конце (или что-то еще) и воспользуемся функцией php's file()
, чтобы получить список из файла.
Мне нужно открыть и работать с каждым файлом, прежде чем он будет забит в таблицу. FYI. Я не могу дождаться более 1-2 секунд, чтобы массив работал, чтобы быть доступным. Любая помощь приветствуется. Память не является проблемой. hdd
Пространство не является проблемой, мощность процессора не является проблемой. проблема заключается в получении списка в массиве Fast при использовании интерфейса веб-страницы. Я не могу ждать, потому что я устал ждать.
Я пробовал использовать краткую быструю программу c с opendir
и readdir
, но даже для сканирования списка каталогов требуется почти 4 минуты. по крайней мере, я мог бы поставить на него губернатора, чтобы ограничить файлы x.
Кажется, ответ назвать программу perl
или c
, которые я могу ограничить рентгеновские файлы, и я могу назвать это с system()
или backticks
. Затем этот список можно открыть с помощью file()
... OTF ... имеет смысл?
Любой отдельный каталог с 10 миллионами файлов в нем будет медленным - ужасно медленно. В тысячах файлов слишком много, как правило. Вам нужно реорганизовать каталог, а не беспокоиться о переопределении в C ('scandir()' также реализован в C тоже - он не будет иметь такой большой разницы). –
Да, подумал об этом ... вы правы, мне, вероятно, придется переписать его в сборке, и к тому времени, когда я это заработаю, scandir() будет выполнен :-) –
Вы использовали бы 'opendir()' и 'readdir()' системные вызовы в сборке, и они займут много времени. Вам, вероятно, нужна многоуровневая иерархия каталогов. Простая схема будет принимать первый символ для первого уровня, второй (или первый и второй символы) для второго уровня и заданный размер системы, возможно, третий (или первый-третий символ) для третьего уровня. Если первые три символа являются алфавитами и более или менее равномерно распределены по 26-буквенному алфавиту (что маловероятно), вы получите около 600 файлов на суб-поддиректорию третьего уровня. –