fsockopen错误我想跳过

时间:2009-10-29 17:10:40

标签: php mysql fsockopen

$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
if (!$sock) return false;

我在我的数据库中列出了我的网址,我正在访问,偶尔我会得到这个:

我收到“致命错误:超过30秒的最长执行时间......”

它预期,因为它进入网站,不允许套接字或其他东西。

如何跳过这些不良网站,以便我的脚本继续运行其他好的网站?

由于

2 个答案:

答案 0 :(得分:1)

降低fsockopen()(通话的最后一个参数)的连接超时,当前设置为30秒。否则,PHP将等待30秒连接到远程主机,然后由于最长执行时间而失败。

您可以使用该值来满足您的需求,但通常您可以认为如果套接字在几秒钟内没有打开就无法连接。

此外,您可能希望使用set_time_limit()来增加脚本的最长执行时间。

答案 1 :(得分:-1)

问题不在于fsocketopen超时,但是php脚本达到php.ini中设置的最大执行时间默认设置为30秒,如果你运行php作为apache模块请检查php.ini中的最大执行时间,为了获得更多的执行时间,你会注意到默认情况下在php.ini上为cli禁用该选项。