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

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

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

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

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

谢谢

4

2 回答 2

1

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

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

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

于 2009-10-29T17:16:19.457 回答
-1

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

于 2009-10-29T19:59:41.420 回答