我得到了一个像底部粘贴代码一样的卷曲。
问题在于,几乎是随机的,结果数组不同,我想知道原因。
我认为它与默认的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,我们使用它实习生
答案 0 :(得分:0)
它似乎是要抓取的网站的随机加载时间和当前服务器容量的组合。