繁体   English   中英

curl_multi_exec有时返回空白

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM