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

mishkalana

Новичок
Как можно увеличить скорость скрипта который ищет определенный текст $search_text на определенной строке в 10 тысячах файлах на сервере? Я делаю так:

PHP:
while ($file = readdir($do)) 
{
   if ($file == '.' or $file == '..') continue;
   
   $fo = file ($dir.'/'.$file);
  
   if ($search_text != $fo[1]) continue;

   echo 'Текст найден в файле', $file, '<br>';
}

В данной конструкции поиск занимает ~2.6 сек.
Как-то можно оптимизировать чтобы побыстрее?
 
Как-то можно, если не работать напрямую с файлами.
Если на один файл уходит 0.26ms, то ты скорее всего упираешься в дисковый i/o или около того.
 
вопрос в том, на сколько тебе надо ускориться.
если на пару порядоков - нужен полнотекстовый поиск
 
вопрос в том, нет ли тут кривости какой.
искать в 10к файлах в определенной строке совпадение.
что вообще там происходит и зачем это делается?
 
вопрос в том, нет ли тут кривости какой.
искать в 10к файлах в определенной строке совпадение.
что вообще там происходит и зачем это делается?
ну в принципе, да, он ищет всегда во 2й строчке, по полному совпадению, яб тоже тагнул
 
всем спасибо за ответы, благодаря вам решение найдено. Удалось повысить работу скрипта на 900%. Теперь поиск выполняется за 0.29 сек.
решение для php такое:
Код:
exec('grep -r -l -i "needle" /path/', $array);
осталось обработать массив с найденым файлами
 
зачем тогда было писать про поиск в определенной строке, если устраивает любое совпадение?
 
если тебе нужна всегда вторая строка, то самой главной оптимизацией будет не читать ВЕСЬ файл в память да еще и с разбивкой на массив.
Читать надо было первые два килобайта и в них уже искать.
 
Сверху