【问题标题】:fsockopen error I want to skipfsockopen 错误我想跳过
【发布时间】:2010-12-11 08:11:00
【问题描述】:
$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
if (!$sock) return false;

我的数据库中有我正在访问的 url 列表,有时我会得到这个:

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

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

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

谢谢

【问题讨论】:

    标签: php mysql fsockopen


    【解决方案1】:

    问题不在于 fsocketopen 超时,而是 php 脚本达到了 php.ini 中设置的最大执行时间,默认设置为 30 秒,如果您将 php 作为 apache 模块运行,请检查ma​​x execution time 在 php.ini 中,增加它以获得更多的执行时间,您会注意到默认情况下该选项在 php.ini 中为 cli 禁用。

    【讨论】:

      【解决方案2】:

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

      您可以使用该值来满足您的需要,但通常您可以假设如果套接字在几秒钟内未打开,则无法连接。

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

      【讨论】:

      • 我之前尝试过降低它,但它仍然给我错误,但现在当我再次测试它时,它就像我想要的那样工作。谢谢
      猜你喜欢
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      相关资源
      最近更新 更多