2

我有一个 PHP 脚本,当通过浏览器调用它时,它恰好在 60 秒后超时。我修改了 httpd.conf 并将 Timeout 指令设置为 300。我修改了所有 PHP 超时设置以延长超过 60 秒。当我从命令行运行脚本时,它将完成。当我每次在 60 秒后通过浏览器执行时,POOF,超时。

我还检查了任何 .htaccess 文件中是否存在超时指令。那里什么都没有。我完全被难住了。

我也在 PHP 代码中强制 set_time_limit(0) 。

我已经挖掘和测试了一个星期,并用尽了我的知识。任何帮助是极大的赞赏。

4

2 回答 2

3

您需要确保在 PHP 和 Apache 中都设置了更高的超时限制。

如果您在 php.ini 中设置较高的 max_execution_time,您的脚本将不会超时,但是,如果您没有定期将脚本结果的输出黄油刷新到浏览器,则脚本可能会在 Apache 端超时,因为网络超时。

在 httpd.conf 中:

Timeout 216000

在 php.ini 中执行:

max_execution_time = 0

(将其设置为 0 使其永远不会超时,就像使用 CLI(命令行)脚本一样)。

确保完成后重新启动 Apache!在大多数 linux 发行版上,您可以通过发出命令(以 root 身份)来执行此操作:

service httpd restart

希望这可以帮助!

于 2013-11-20T17:18:15.377 回答
0

可以设置maxtime的地方很多。如果您使用的是 FastCGI,尤其是使用诸如 Virtualmin 之类的东西,则有一组额外的 max_execution_time 设置对您隐藏,除非您有权访问。

简而言之,你需要弄清楚所有的地方,给定你的 PHP 堆栈设置,可以有一个执行时间限制器,设置这些值,重新启动服务器,然后执行

set_time_limit(0);

为了很好的衡量。

如果没有关于您的特定设置的更多信息,并且鉴于我在处理 PHP 执行时间挂起方面的经验,我能告诉您的最多。

于 2012-04-19T16:39:52.027 回答