【问题标题】:PHP | curl multi | timeout | connect_timeout | check for 200 | debuggingPHP |卷曲多|超时 |连接超时 |检查 200 |调试
【发布时间】:2014-02-06 16:03:13
【问题描述】:

我得到了一个 curl multi ,就像底部粘贴的代码一样。

问题在于,结果数组几乎随机地不同,我想知道为什么。

我认为这与默认的 SETOPT 超时或 connect_timeout 有关,之后更多的是与网站加载时间(这是随机的)有关。

将自定义 CURLOPT_TIMEOUT 设置为 20 会使我的结果数组减少 60%。这是否意味着最有价值的请求需要超过 20 秒?

是否可以选择先用 curl 检查标题,如果 200(OK)而不是进程? 我的设置是否最佳?

$ch = curl_multi_init();
foreach ($links_2 as $count => $link)
{
        $curl_array[$count] = curl_init($link);
        curl_setopt($curl_array[$count], CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl_array[$count], CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curl_array[$count], CURLOPT_USERAGENT, $useragent);    
        curl_multi_add_handle($ch, $curl_array[$count]);
}

do {
    curl_multi_exec($ch, $exec);
} while($exec > 0);

foreach($links_2 as $count => $link) 
{
        $returned = curl_multi_getcontent($curl_array[$count]);
        $pattern_email = '/[A-Z0-9._%+-]+(@|\(at\)|\[at\])[A-Z0-9.-]+\.[A-Z]{2,4}\b/i'; 
        preg_match_all($pattern_email,$returned,$emails);
        foreach ($emails[0] as $m)
        {
            $email_all[] = $m;
        }

}



foreach($links_2 as $count => $link)  
{
        curl_multi_remove_handle($ch, $curl_array[$count]);
}

curl_multi_close($ch); 

foreach($links_2 as $count => $link) 
{
        curl_close($curl_array[$count]);
}   

顺便说一句,这不是网络爬虫,我们用它实习

【问题讨论】:

    标签: php curl


    【解决方案1】:

    这似乎是要爬取的网站的随机加载时间和自己当前服务器容量的组合。

    【讨论】:

      猜你喜欢
      • 2015-02-23
      • 2011-09-16
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2017-06-02
      相关资源
      最近更新 更多