我有一个简单的 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