Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Рекурсивный поиск по маске
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
в 5 строке вы проверяете является ли ресурс $filename каталогом, но в 3 добавляя фильтр (например *.txt), отфильтровываете все каталоги оставляя только файлы с определенным расширением, т.е при добавлении фильтра is_dir($filename) всегда будет равно false, и никакой рекурсии не будет. (Добавление)
попробуйте вместо фильтра изменить 5 строку
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
ext
разобрались, но предложенный мной вариант экономичней к ресурсам системы, так как запрос к фс выполняется один раз, а в вашем случае 2 раза.
При наличии большого количества файлов рискуете не вложиться в таймлимит.
----- if(time()>1356048000) die();
ext
Отправлено: 14 Июня, 2011 - 20:14:35
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
White, твой код не работает, может у меня что-то не так настроено? >20000 фалов обработалось за 1.28570103645325 секунды, естественно локально. (Добавление)
Вопрос теперь в другом, один и тот же файл повторяется несколько раз.
20000 фалов обработалось за 1.28570103645325 секунды, естественно локально.
Из личного опыта. Получение содержимого каталога джумлы(около 1000 подкаталогов и 5000 файлов) таким способом под Linux: 5 - 10сек. Win7 + Denwer около 20сек + до 100% нагрузки на ЦП. (Core2 1.8, 2Gb). Увеличим это время вдвое, получим довольно неприятную картину.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.