too slow to find data in files, any idea how to speed up? there are files in the folder, each file has the structure:
url:man.report <title> man.report - это наилучший источник информации по теме . </title> <h1> man.report </h1> man.report это наилучший источник интересующей Вас информации. От общеизвестных тем, до того, что вы даже не ожидаете найти; на man.report есть все. Надеемся, что вы найдете то, что ищете. ||| url:soft-trans.ru <title> Софттранс | Программы для транспорта </title> <h1> Софттранс </h1> ||| и т.д. file size is ~ 1GB total, search time ~ 200sec., search code:
<?php declare (strict_types = 1); error_reporting(-1);//выводить всё $start = microtime(true);//запускаем таймер function my_search($search, $text) { $q = 1; foreach($search as $v) { if(!mb_strstr($text, $v)) { $q = 0; break; } } return($q); } $search = trim(mb_strtolower('ssd цена')); $s = $search; $search = explode(' ', $search); foreach($search as &$v) { $v = ' '.$v.' '; } unset($v); $files = array_diff(scandir(__DIR__.'/file/'), array('..', '.')); $u = []; $c = 0; foreach($files as $value) { $e = $value; //тут в цикле перебираю файлы $value = file_get_contents(__DIR__.'/file/'.$value); $value = mb_strtolower($value); $site_arr = explode(PHP_EOL.'|||'.PHP_EOL, $value); foreach($site_arr as $value1) { $value2 = str_replace([PHP_EOL,'.',',','-'], ' ', $value1);//,'-' $q = my_search($search, $value2); if($q) { ++$c; $url_site = substr(strstr($value1, 'url:'), 4);//взял ссылку страницы $url_site = strstr($url_site, PHP_EOL, TRUE); $value1 = strip_tags($value1); foreach($search as $v) { $value1 = str_replace(trim($v), '<b>'.$v.'</b>', $value1); } unset($v); $u[] = '<a href="http://'.$url_site.'/" target="_blank">http://'.$url_site.'/'.'</a>'.' | '.$e.'<br />'.$value1.'<br />'; } if($c > 60) { break 2; } } unset($value1); } unset($value); if(!empty($u)) { $u = array_unique($u);//удаляю дубли $u = implode('<hr>', $u); } else { $u = 'ничего не найдено'; } echo $u.'<br />'; echo 'всего: '.$c.'<br />'; echo '<br />'.'Время работы скрипта: ' . (microtime(true) - $start) . ' секунд<br /><br />'; ?>
system("grep -R 'search fraze' . ")- Naumov