致命错误:超出最长执行时间30秒

Har*_*M V 386 php json

我正在从在线源下载一个JSON文件,当它运行循环时,我收到此错误:

致命错误:第24行的C:\ wamp\www\temp\fetch.php超出了30秒的最大执行时间

Mic*_*ter 692

你的循环可能是无止境的.如果不是,您可以延长最长执行时间,如下所示:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes
Run Code Online (Sandbox Code Playgroud)

  • set_time_limit(300)可用于临时延长时间限制. (95认同)
  • ini_set('max_execution_time',0); //没有限制 (28认同)
  • 我是否在代码顶部添加了这个? (4认同)
  • @sangam我会说这是最好的做法,尽量保持这个限制,同时允许一定量的额外缓冲.出于安全原因,我不想完全关闭它.应该设置合理.实际上,我把它设置为我在运行时间最长的脚本在中等服务器压力级别下完成所需时间的两倍.它仍然可能总是失败.因此,最佳实践也是单独处理耗时脚本的超时问题. (3认同)

小智 178

我有同样的问题,并通过改变帕拉姆价值解决它max_execution_timephp.ini,就像这样:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮到你.

  • `php.ini` 可以在 `/etc/php5/apache2/php.ini` 中找到...我正在使用 ubuntu 13.04... (2认同)

Mas*_*ssa 45

上面的所有答案都是正确的,但我在某些情况下使用一种简单的方法来避免它.

只需将此命令放在脚本的开头:

set_time_limit(0);
Run Code Online (Sandbox Code Playgroud)

  • 这根本不推荐 (7认同)
  • 关闭时间限制并不能防止无限循环,所以总是设置一个(更大的)限制。 (2认同)

小智 22

我在升级到WordPress 4.0时遇到了这个问题.默认情况下,WordPress将最长执行时间限制为30秒.

将以下代码添加到WordPress安装根目录中的.htaccess文件中,以覆盖默认值.

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes
Run Code Online (Sandbox Code Playgroud)


Jam*_*med 18

编辑php.ini

找到这一行:

max_execution_time
Run Code Online (Sandbox Code Playgroud)

将其值更改为300:

max_execution_time = 300
Run Code Online (Sandbox Code Playgroud)

300表示http请求的执行时间为5分钟.


tle*_*nss 16

你的脚本超时了.查看set_time_limit()函数以延长执行时间.或者配置脚本以使其运行更快:)


Nas*_*sim 11

如果以上所有内容都不适合您,则将.htaccess文件添加到脚本所在的目录中并将其放入其中

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这是我解决问题的方式,也ini_set('max_execution_time', 86400);没有set_time_limit(86400)解决我的问题,但.htaccess方法确实如此.


Kar*_*Sho 10

我们可以用3种不同的方式解决这个问题.

1)使用php.ini文件

2)使用.htaccess文件

3)使用Wp-config.php文件(用于Wordpress)

  • 展示解决问题的 3 种方法的示例将是最有帮助的。 (4认同)

Mwa*_*iga 9

您可以通过在脚本顶部添加此行将其设置为零来删除限制:

<?php ini_set('max_execution_time', 0); ?>
Run Code Online (Sandbox Code Playgroud)


Mik*_*e G 7

也许在php.ini文件下检查你有没有改变过的东西.例如,我将"; intl.default_locale ="更改为"; intl.default_locale = en_utf8"以启用"国际化扩展(Intl)"而不添加"extension = php_intl.dll",然后发生了同样的错误.所以我建议检查类似的错误.


Suc*_*mar 7

按照路径/etc/php5(your php version)/apache2/php.ini.

打开它并将值设置max_execution_time为所需的值.


小智 5

你可以轻松地用它来惹恼它.jusst得到whm ----->服务配置----------> php配置编辑器------- max_execution_time -----> 30(默认情况下将其更改为任何值你想)


小智 5

通过在PHP脚本顶部添加以下行来增加脚本执行时间。

ini_set('max_execution_time', 120); //120 seconds = 2 minutes
Run Code Online (Sandbox Code Playgroud)

参考来自“ 增加PHP脚本执行时间”


Buk*_*ksy 5

要扩展您的max_execution_time使用,您可以使用ini_setset_time_limit.

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);
Run Code Online (Sandbox Code Playgroud)

!但要注意,两个函数都重新启动,也计算脚本已经执行的时间

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//
Run Code Online (Sandbox Code Playgroud)

因此,如果要设置脚本可以运行的确切最长时间,则必须首先执行命令.

这两个功能之间的差异是

  • set_time_limit 不会返回信息是否成功但会在出错时发出警告.
  • ini_set成功时返回旧值,失败时返回false,没有任何警告/错误