вопрос по оптимизации регулярных выражений в цикле

RigVan

Постоянный член клуба
вопрос по оптимизации регулярных выражений в цикле

есть куча нтмл-файлов, следующей структуры:
[ненужный текст][page №][ненужный текст][Глава: №][название главы][ненужный текст]
названия этих файлов я помещаю в массив $textarr
далее перебираю массив файлов и для каждого файла задаю условия, через рег. выражения.
Код выглядит так:
PHP:
set_time_limit($MAX_TIME); // эту строку поставил от безисходности, иначе выскакивал "Maximum execution time of..." 
echo "<table border=1>"; 
foreach ($textarr as $value)
{
$link = file_get_contents("http://www.somesite.ru/{$value}");
preg_match("/page \- ([0-9]+)/", $link, $numpage);
if ($numpage[1]<=0){$numpage[1]="ошибка";}
echo "<tr>
<td>$numpage[1]</td>
<td>{$value} <a href=\"http://www.somesite.ru/{$value}\"> читать </a></td>
</tr>"; 
}
echo "</table>";
Скрипт работает очень медлено, просто тормоз какой-то! Я даже еще и названия глав не "вытаскивал", только номера страниц.... Есть ли какой способ улучшить скрипт?
 

McSimm

Новичок
наверное стоит для начала выяснить что именно в скрипте тормозит выполнение, а уж потом пытаться оптимизировать.
попробуйте измерить сколько в процентах тратится на регулярное выражение по отношению к времени общей работы.
 

RigVan

Постоянный член клуба
McSimm

:) Во блин! А совет, то дельный! Похоже, что тормозит "file_get_contents". Ну и изначально я торможу :)
Какой же алгоритм придумать, что бы скрипт "разогнать"? Интересно, что быстрее
PHP:
$file = fopen($link, "r");
или
PHP:
file_get_contents; ?
 

bkonst

.. хочется странного?...
Скорее всего - никак. Тормозит-то "доставка" с удаленного сайта.
Можно попробовать кэшировать полученные данные.
 

McSimm

Новичок
"разогнать" сколь-нибудь заметно безусловно нельзя.
надо менять подход к решению поставленной задачи.
В любом случае надо уменьшать количество внешних запросов.
(оценка заголовков, кеширование результатов, порционность запросов)
--
На всякий случай -- если вдруг http://www.somesite.ru это ваш сервер, тот же где выполняется скрипт, то конечно необходимо обращаться по внутреннему пути, а не через wrapper.
А если все-таки внешний, то, надеюсь, задача не связана с кражей контента ;)
 

RigVan

Постоянный член клуба
Кол-во внешних запросов к сожалению уменьшить нельзя, кэширование тоже не выход, так-как линки могут измениться.
Остается только один вариант: искать более быстрый сервер...
В любом случае, уважаемые господа, спасибо за участие в обсуждении данной темы!
--
McSimm
Нет воровства контента, конечно нет (читайте
PHP:
echo "... <a href=\"http://www.somesite.ru/{$value}\"> читать </a>...";
т.е. идут ссылки на удаленный ресурс, так что будте спокойны :) )
 
Сверху