我有一个简单的PHP脚本,它试图从网站列表中读取HTML数据。它工作正常,但有些网站速度非常慢,或者不在线,我的脚本会因为MySQL超时而死掉。
$ch = curl_init();
@curl_setopt($ch, CURLOPT_URL, $page_to_hit);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
@curl_setopt($ch, CURLOPT_TIMEOUT,10);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($ch, CURLOPT_HEADER, 1);
$data = curl_exec($ch);
理想情况下,我希望此脚本在最长10秒后完成,并且当我使用curl_errno()时,如果URL超过10秒,cURL将显示某种错误。
相反,PHP完全忽略了这些超时设置,并且它将挂起60秒,此时MySQL已经有足够的超时设置,并且已经死了。
为什么PHP cURL会忽略我的超时设置?
我尝试在浏览器中运行此脚本,也通过命令行运行。两个结果都相同。
PHP版本5.4.8 cURL版本7.15.5