PHP |卷曲多|超时| connect_timeout |检查200 |调试

时间:2014-02-06 16:03:14

标签: php curl

我得到了一个像底部粘贴代码一样的卷曲。

问题在于,几乎是随机的,结果数组不同,我想知道原因。

我认为它与默认的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]);
}   

顺便说一句,这不是一个webcrawler,我们使用它实习生

1 个答案:

答案 0 :(得分:0)

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