忽略PHP cURL超时设置

时间:2013-10-08 16:04:21

标签: php curl timeout

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

0 个答案:

没有答案