Apache和/或PHP超时 - 难倒。

时间:2012-04-19 16:15:01

标签: php linux apache timeout

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

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

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

我一直在挖掘和测试一周,并且已经耗尽了我的知识。任何帮助是极大的赞赏。

2 个答案:

答案 0 :(得分: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

希望这有帮助!

答案 1 :(得分:0)

有很多地方可以设置maxtime。如果您使用的是FastCGI,尤其是Virtualmin等,除非您有权访问,否则还有一组max_execution_time的设置对您隐藏。

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

set_time_limit(0);

好的措施。

如果没有关于您的特定设置的更多信息,并且根据我在PHP中处理执行时间挂断的经验,这是我能告诉您的最多。