php timeout - set_time_limit(0); - 不要工作

use*_*963 24 php timeout execution

我的PHP文件有问题,执行时间超过30秒.

搜索之后,我set_time_limit(0);在代码开头添加了cbut,文件仍然500 error在30秒后超时.

log: PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /xxx/xx/xxx.php

safe-mode : off
Run Code Online (Sandbox Code Playgroud)

小智 27

检查php.ini

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

ini_set('max_execution_time', 0); //0=NOLIMIT
Run Code Online (Sandbox Code Playgroud)

  • 还要明白,正如Marc B.所说,共享主机上可能存在限制,因此如果这些功能无法正常工作,请询问服务器的某些管理员 (3认同)

Pau*_*aul 6

这是一个老线程,但我想我会发布这个链接,因为它在这个问题上帮助了我很多.基本上它说的是服务器配置可以覆盖php配置.来自文章:

例如,mod_fastcgi有一个名为"-idle-timeout"的选项,它控制脚本的空闲时间.因此,如果脚本没有向fastcgi处理程序输出任何内容,那么fastcgi会终止它.设置有点像这样:

Apache <-> mod_fastcgi <-> php processes
Run Code Online (Sandbox Code Playgroud)

该文章有其他例子和进一步解释.希望这有助于其他人.


Ste*_*teJ 5

我通常在主循环中使用 set_time_limit(30) (因此每个循环迭代被限制为 30 秒,而不是整个脚本)。

我在多个数据库更新脚本中执行此操作,这些脚本通常需要几分钟才能完成,但每次迭代不到一秒 - 保持 30 秒的限制意味着如果我愚蠢到创建一个脚本,脚本将不会陷入无限循环。

我必须承认,我选择 30 秒的限制有点随意 - 我的脚本实际上可以使用 2 秒,但考虑到实际应用程序,我觉得 30 秒更舒服 - 当然,您可以使用您认为的任何值合适的。

希望这可以帮助!


Ano*_*j P 3

ini_set('max_execution_time', 300);
Run Code Online (Sandbox Code Playgroud)

用这个