Оптимизировать парсер
1.
ZipeR (22.11.2010 / 15:43)
Необходимо отпарсить очень много ссылок!Написал вот так
<?php
for($i=0;$i<count($link);$i++) {
// инициализируем обычный объект curl
$url=str_replace('href=',"",$link[$i]);
$url=str_replace('class="catBigLink"',"",$url);
$url=str_replace('"',"",$url);
$url=str_replace('//',"",$url);
$urlpars="http://www.site.ru".$url;
//echo($urlpars."<br>");
$handles[$i] = curl_init();
// устанавливаем настройки соединения
curl_setopt($handles[$i] , CURLOPT_URL, $urlpars);
curl_setopt($handles[$i] , CURLOPT_HEADER, 0);
curl_setopt($handles[$i] , CURLOPT_RETURNTRANSFER, true);
curl_setopt($handles[$i] , CURLOPT_TIMEOUT, 15);
// добавляем текущий объект curl в пул multi curl
curl_multi_add_handle($mh,$handles[$i]);
}
// выполняем запрос
$running=null;
do
{
curl_multi_exec($mh,$running);
} while ($running > 0);
// получаем контент со всех сайтов
for($i=0;$i<count($handles);$i++)
{
// получаем контент с определенного сайта
$result= curl_multi_getcontent($handles[$i]);
preg_match_all('/href=.\/catalog.php.catID=[0-9]{1,4}..class="catBigLink"/is', $result, $temp);
//print_r($temp);
for($k=0;$k<count($temp1[0]);$k++)
{
$ssilk[count($ssilk)]=$temp1[0][$k];
}
// удаляем из пула текущий объект curl
curl_multi_remove_handle($mh,$handles[$i]);
if ($temp[0][0]!="") pars1($temp);
}
// освобождаем ресурсы
curl_multi_close($mh);
?>
Но данная конструкция очень долго работает!!!Как ее можно оптимизировать!Заранее спасибо
Добавлено через 05:11 сек.
По идеи В аттаче нормальный класс.
2.
Александр (22.11.2010 / 16:30)
А что там в аттаче?
3.
ZipeR (22.11.2010 / 16:33)
multicurl
4.
ZipeR (22.11.2010 / 16:50)
Вот класс
http://upwap.ru/1139511
Скопировал в формате,редактируйте на .class
5.
ZipeR (23.11.2010 / 02:08)
5.
ZiGR, код посмотри
6.
Сааааа-нёёёёё-к (23.11.2010 / 08:31)
Долго, потому что два цикла...но это чисто я так думаю.
7.
ZipeR (23.11.2010 / 09:07)
7.
StingerIce, нет дело не в циклах,они не стыкуются вместе при работе на одной генерации
8.
Женек (23.11.2010 / 09:45)
Возможно сайты неохотно и тяжело отдают тебе контент при запросе
9.
ZipeR (23.11.2010 / 15:13)
9.
Basters, нет нормальный пинг у них
10.
Александр (23.11.2010 / 16:05)
Расставь microtime() узнаешь где тормозит.
11.
ZipeR (23.11.2010 / 16:32)
124 секунд при парсинге с сайта
URL:
https://visavi.net/topics/15761