Проблема с многопоточностью

Makssss

Новичок
Привет всем!

Работаю в конторе, которая занимается разработкой радиоэлектроники и продажей компонентов. Начальство договорилось с одной забугорной конторой, что мы с их сайта будем брать описания микросхем и транзисторов(тех. характеристики и области применения). Впринципе, нужно просто инфу выпарсить и регулярными выражениями разделить. Все проблема в том, что там в общей сложности почти 31 000 страниц. У меня есть файл с адресами(url_c.txt). Решил все это делать через multi curl . Чтобы сильно сервер не нагружать, решил сделать так:

PHP:
$cook='cook.txt';
$f_g=fopen('url_c.txt', 'r');
while(!feof($f_g))
{
 $cont_of_urls1[] = trim(fgets($f_g, 4096));
}
fclose($f_g);
 
for($u=0; $u<=30; $u++)
{
    $cont_of_urls[]=$cont_of_urls1[$u]; //Это для теста, чтобы проверить 30 урлов
}
 
 
$urls=array_chunk($cont_of_urls, 10);
 
for($r=0; $r<=count($urls); $r++)
{
$mh = curl_multi_init();
for($a=0; $a<=count($urls[$r]); $a++)
{
$ch[$a] = curl_init();
curl_setopt($ch[$a], CURLOPT_URL, $urls[$r][$a]);
curl_setopt($ch[$a], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1');
curl_setopt($ch[$a], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch[$a], CURLOPT_COOKIEFILE, $cook);
curl_setopt($ch[$a], CURLOPT_COOKIEJAR, $cook);
curl_setopt($ch[$a], CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch[$a], CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch[$a], CURLOPT_TIMEOUT, 60);
curl_multi_add_handle($mh, $ch[$a]);
}
do 
{
  $mrc = curl_multi_exec($mh, $active);
} while ($active>0); 
 
 
for($a=0; $a<=count($urls[$r]); $a++)
{    
   $str = @curl_multi_getcontent($ch[$a]);
   echo $str;
$ch=array();
}
curl_multi_close($mh);
}

Задумывал, чтобы грузилось в 10 потоков и не сильно комп грузило. Но в итоге грузится только 10 адресов (как в указании, по сколько подмассивов должно быть в массиве) из 30. Ребята, где ошибся? Спасибо
 

WMix

герр M:)ller
Партнер клуба
31000 вот жешь сила...
запусти скрипт 30 раз за 20 минут справишся без многопоточности
 
Сверху