set_time_limit(0)和“最大执行时间”PHP

时间:2011-12-04 17:27:48

标签: php .htaccess

我有一个我设置的脚本:

set_time_limit(0) 

但仍然得到

Fatal error: Maximum execution time of 90 seconds exceeded in /home/Feed.php on line 234

我也尝试过设置:

php_value max_execution_time 120
<。>在.htaccess文件中,但仍然无法阻止此错误 - 为什么这不是重写的任何想法?

3 个答案:

答案 0 :(得分:5)

最有可能的是,您的主机正在运行安装了Suhoshin补丁的PHP副本。此补丁为PHP提供了大量安全性和操作性增强功能,包括允许主机禁用set_time_limit()等功能。

主机可以通过其他方式禁用set_time_limit()功能,但这是最有可能的。 (特别是因为你已经排除了安全模式)

为什么要禁用此功能?因为花费很长时间运行的PHP函数通常也会占用大量服务器资源;在共享托管环境中,主机减轻此类事情以避免让恶意脚本影响其他用户是明智之举。

你能做些什么?

首先,您确定需要设置时间限制吗?你知道为什么你的脚本花了那么多时间来运行吗?你能解决这个问题吗?也许对代码进行一些分析可能会帮助您找到瓶颈并加快程序的速度。

或者,如果您确实需要设置时间限制,则可能需要让您的主机启用此操作,或者升级您的包或切换主机提供商。

答案 1 :(得分:3)

当PHP以安全模式运行时,此功能无效。除了关闭安全模式或更改php.ini

中的时间限制外,没有其他解决方法

答案 2 :(得分:0)

如果您确定它没有以安全模式运行......

http://php.net/manual/en/function.set-time-limit.php

“调用时,set_time_limit()从零重新启动超时计数器。”

理论上,你可以反复call set_time_limit(0)

但是,您的托管服务提供商可能会阻止通过安全模式等

老实说,如果你需要自定义那种东西,我只是试着获得一个便宜的VPS来控制你的东西。