У меня проблема с этой функцией:
function multi_activity($nodes,$headers){
$node_count = count($nodes);
$results=array();
$curl_arr = array();
$master = curl_multi_init();
for($i = 0; $i < $node_count; $i++)
{
$url =$nodes[$i];
$curl_arr[$i] = curl_init($url);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_arr[$i], CURLOPT_HEADER, false);
curl_setopt($curl_arr[$i], CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_arr[$i], CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_multi_add_handle($master, $curl_arr[$i]);
}
do {
curl_multi_exec($master,$running);
} while($running > 0 );for($i = 0; $i < $node_count; $i++)
{
$results[] = curl_multi_getcontent ( $curl_arr[$i] );
curl_multi_remove_handle($master, $curl_arr[$i]);
}
curl_multi_close($master);
return $results;
}
На самом деле, я вызываю эту функцию 300 раз и каждый раз с $nodes
содержащий 30 разных URL. Я на самом деле не понимаю, как CUrl
на самом деле работает, но я должен ждать 10 минут, чтобы сделать работу и напечатать мой JSON. Есть ли способ улучшить его с помощью multi_curl
или другой асинхронный инструмент PHP / API. Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …