[英]curl_multi_exec returning blanks sometimes
基本上,我要从一个站点中抽取数百个子页面(作为测试运行),然后我必须解析这数百个子页面中的每个页面以获取一些数据。 现在,所有这些都正常工作了。 但是,当然,如果我连续执行此操作,则会花费太多时间,因为页面太多。 所以我使用了curl_multi_exec,但是现在我遇到了一些页面将返回空白的问题。 哪些页面是空白的是相当随机的,所以我假设它与Web服务器有关,因为我一次向它发送了200个请求,因此决定不响应。 有没有一种方法可以限制一次请求的数量,或者如果没有正确返回请求,请重新卷曲请求,或者以其他方式处理此问题?
现有的curl代码:
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;
}
您可以使用此类:
https://github.com/petewarden/ParallelCurl
是curl multi上的一层,并支持设置最大线程数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.