【发布时间】: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]);
}
顺便说一句,这不是网络爬虫,我们用它实习
【问题讨论】: