致命错误:超过30秒的最大执行时间


397

我正在从在线资源下载JSON文件,当它在循环中运行时,出现此错误:

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


11
超过60秒最大执行时间的可能重复,这已经是其他三个时间的重复。请先使用搜索功能。
戈登

“ set_time_limit()函数和配置指令max_execution_time仅影响脚本本身的执行时间。花费在脚本执行之外的活动上的任何时间,例如使用system()进行系统调用,流操作,数据库查询等。确定脚本运行的最长时间时不包括。。在Windows上不是这样。”来自PHP文档
JacobSánchez

Answers:


722

您的循环可能是无止境的。如果不是,则可以这样延长最长执行时间:

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

set_time_limit(300);

可用于暂时延长时间限制。


95
set_time_limit(300)可用于临时延长时间限制。
Omn

是仅针对该脚本设置此设置,还是会影响在同一服务器上执行该脚本之后执行的所有其他脚本?

1
@Rao是的,这仅适用于那个脚本。要使其适用于所有脚本,您需要在php.ini文件中进行更改。你也可以做set_time_limit(0); 如果您希望脚本永久运行或长时间运行
Haseeb 2013年

31
ini_set('max_execution_time',0); //无极限
朱奈德雅达利

3
@sangam我想说这是最好的做法,在允许一定数量的额外缓冲区的同时,尽可能降低此限制。出于安全原因,我不想将其完全关闭。应该设置合理。实际上,我将它设置为在中等服务器压力级别完成我的最长运行脚本所花费的时间的两倍。仍然可能总是失败。因此,最佳做法也是分别处理耗时脚本的超时问题。
Hafenkranich

185

我有同样的问题,并通过更改值帕拉姆解决它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)

希望对您有所帮助。


1
出于某种原因,ini_set无法正常工作,但是可以肯定的帮助!
gabrjan

php.ini可以在/etc/php5/apache2/php.ini... 中找到。我正在使用ubuntu 13.04 ...
Enissay 2013年

在wamp上安装moodle时遇到了相同的问题,但是解决了配置php.ini文件的问题
Muhammad Irfan

1
php.ini更改后需要重新启动apache
spideringweb

[php7]-sudo nano /etc/php/7.0/apache2/php.ini
克里斯·兰博

46

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

只需将以下命令放在脚本开头即可:

set_time_limit(0);

9
根本不建议这样做
我是最愚蠢的人

1
关闭时间限制无法防止无限循环,因此请始终设置(更大)限制。
bimlas

@IamtheMostStupidPerson为什么不呢?如果您将其用作本地主机
Fernando Torres

23

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

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

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes


16

您的脚本正在超时。看一下set_time_limit()函数以延长执行时间。或分析脚本以使其运行更快:)


1
@HarshaMV他的意思是使用性能配置文件来确定脚本开始缓慢的原因,并优化代码以缩短执行时间。根据瓶颈是什么(CPU vs.磁盘I / O vs.网络),这可能有用也可能没用。
丹·贝查德

12

如果以上方法都不适合您,则将.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>

这是我解决问题的方法,也ini_set('max_execution_time', 86400);没有set_time_limit(86400)解决我的问题的方法,但是.htaccess方法可以。


1
在我的情况下有效。谢谢。用GB的M替换M
Web_Developer 2015年

11

我们可以通过3种不同的方式解决此问题。

1)使用php.ini文件

2)使用.htaccess文件

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



7

遵循路径/etc/php5(your php version)/apache2/php.ini

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


在某些托管服务提供商上,您可能需要在/ home
/。php /

7

也许检查php.ini文件下是否有任何更改。例如,为了不启用“国际化扩展名(Intl)”而未添加“ extension = php_intl.dll”,我将“ ;; intl.default_locale =”更改为“ ;; intl.default_locale = en_utf8”,然后发生了相同的错误。因此,我建议检查类似的错误。



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);

!! 但是请注意,这两个函数都会重新启动,并且还会计算执行脚本所花费的时间

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)
//

因此,如果您想设置脚本可以运行的最长时间,则您的命令必须是第一位的。

这两个功能之间的差异是

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

5

您可以使用WHM轻松完成。刚到:

WHM->服务配置-> PHP配置

编辑器-> max_execution_time=30

(30是默认值,将其更改为您想要的任何值)



0

我在以下情况下做了一些更改:xampp \ phpMyAdmin \ libraries \ config.default.php

我已经搜索了:$cfg['ExecTimeLimit'] 并更改了右侧的值...

您可以将“右手值”更改为任何更高的值,例如“ 5000”。而且有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.