PHP脚本超时,否则在CentOS下被杀死在Apache(共享主机)

当试图运行一个PHP脚本(CentOS,Apache,PHP 5.2)时,可能需要很长时间,45分钟后显然死亡。

PHP脚本是从networking浏览器中调用的,在某些情况下,它将在处理POP3邮箱和发送电子邮件时作为自动监视系统的一部分来执行大量的工作。

从命令行运行PHP脚本可能是一个更好的select,但我想了解到目前为止发生了什么。

我运行了一个testing脚本,在45分钟后,它似乎最终导致了内部服务器错误(500?)。

这个限制在哪里,什么是杀死脚本,如果这是发生了什么?

它运行在Hostgator.com上的共享主机上。

我假设你已经在PHP中使用set_time_limit(0)来closures该特定脚本的PHP最大执行时间? http://nz.php.net/manual/en/function.set-time-limit.php

如果你还没有尝试过 – 这可能是答案 – 如果你尝试了 – 然后继续阅读…

Linux允许你为用户进程设置一个最大运行时间 – 共享主机通常把它作为故障安全来杀死任何挂起的脚本(否则你可能不得不重新启动服务器来杀死它们 – 至less系统pipe理员必须这样做)手动)

我似乎无法find我之前看到的信息 – 我很确定这是http://gerardnico.com/wiki/linux/limits.conf的扩展

无论哪种方式,你将不得不find一种方法来加快你的脚本 – 为什么需要45分钟运行? 你能把它分成几个部分吗? – 等待45分钟,networking服务器的回应并不是真的有用(如果你刷新并且多次运行你的脚本 – 或者networking蜘蛛命中它,并在你不知道的情况下触发它,服务器是否可能是负面的受影响?)

Hostgator的PHP脚本执行时间最长为30秒。

HostGator PHP.inivariables,无法更改

至于你的脚本,如果你的脚本被closures并重新启动,脚本是从哪里开始的呢? 如果是这样,CRON工作可能是一个好主意

HostGator支持 – Cron Jobs

似乎hostgator也不允许CRON作业在短于15分钟的时间间隔内运行。

希望这可以帮助!

这就是Hostgator的支持:

在我们的共享服务器上,我们拥有自动化监控系统,可以根据特定的资源使用情况中断stream程,以促进稳定的环境。 正如你所发现的,其中一个限制就是任何用户进程的最长运行时间为45分钟。 我们可以确认,如果你要在shell或者通过php exec()等运行这个脚本,那么在45分钟后它仍然会被杀死。

您可以通过在我们的共享环境之外执行脚本来避开此限制,例如在VPS或专用服务器上。