$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
if (!$sock) return false;
我在我的数据库中列出了我的网址,我正在访问,偶尔我会得到这个:
我收到“致命错误:超过30秒的最长执行时间......”
它预期,因为它进入网站,不允许套接字或其他东西。
如何跳过这些不良网站,以便我的脚本继续运行其他好的网站?
由于
答案 0 :(得分:1)
降低fsockopen()
(通话的最后一个参数)的连接超时,当前设置为30秒。否则,PHP将等待30秒连接到远程主机,然后由于最长执行时间而失败。
您可以使用该值来满足您的需求,但通常您可以认为如果套接字在几秒钟内没有打开就无法连接。
此外,您可能希望使用set_time_limit()
来增加脚本的最长执行时间。
答案 1 :(得分:-1)
问题不在于fsocketopen超时,但是php脚本达到php.ini中设置的最大执行时间默认设置为30秒,如果你运行php作为apache模块请检查php.ini中的最大执行时间,为了获得更多的执行时间,你会注意到默认情况下在php.ini上为cli禁用该选项。