基本上我有几百个子页面(我作为测试运行),然后我必须解析这几百个子页面中的每一个以获取一些数据。现在这一切都很好用。但是,当然,它需要太长时间,因为有很多页面,如果我这样做是连续的。所以我使用了curl_multi_exec,但现在我遇到了其中一些页面将返回空白的问题。哪些页面是空白的是非常随机的,所以我假设它与Web服务器决定不响应,因为我一次向200个请求发送垃圾邮件。有没有办法既可以一次限制请求数量,也可以在请求没有正确返回时重新处理请求,或以其他方式处理此问题?
现有卷曲代码:
function multiple_html_requests($nodes){
$mh = curl_multi_init();
$curl_array = array();
foreach ($nodes as $i=>$url){
$curl_array[$i] = curl_init($url);
curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $curl_array[$i]);
}
$running = NULL;
do{
usleep(10000);
curl_multi_exec($mh, $running);
} while($running > 0);
$res = array();
foreach($nodes as $i=>$url){
$res[$url] = curl_multi_getcontent($curl_array[$i]);
}
foreach($nodes as $i=>$url){
curl_multi_remove_handle($mh, $curl_array[$i]);
}
curl_multi_close($mh);
return $res;
}
答案 0 :(得分:0)
您可以使用此课程:
https://github.com/petewarden/ParallelCurl
是多层卷曲多层并支持设置最大线程数