1

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

4

0 回答 0