我正在从在线资源下载JSON文件,当它运行通过循环时,出现以下错误:
致命错误:在C:\ wamp \ www \ temp \ fetch.php的第24行超出了30秒的最大执行时间
我正在从在线资源下载JSON文件,当它运行通过循环时,出现以下错误:
致命错误:在C:\ wamp \ www \ temp \ fetch.php的第24行超出了30秒的最大执行时间
你需要优化你的代码并寻找错误。
例如,你可能会错误地创建一个无限循环。显然,在这种情况下增加执行时间是没有帮助的。
或者,如果你正在将接收到的数据存储在数据库中,有一些技术可以大大提高性能,比如使用事务或多插入查询。
审查你的代码,找出性能瓶颈并进行优化。
如果代码已经优化但不可避免地需要花费太长时间,考虑将其作为命令行脚本来执行,而不是作为网页调用。当从命令行调用时,PHP脚本不受时间限制的影响。
例如,你可以将这个JSON下载配置为定时任务,或者实现一些队列,当你的网页只创建一个只需几秒钟的任务时,后台进程将花费时间来下载、解析和存储JSON。
作为最后的手段,你可以临时延长时间限制,可以使用以下方法之一:
ini_set('max_execution_time', '300'); //300 seconds = 5 minutes
或者
set_time_limit(300);
我遇到了同样的问题,并通过更改 php.ini
中 max_execution_time
参数的值来解决它,像这样:
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)
希望这能帮到你。
php.ini
可以在 /etc/php5/apache2/php.ini
找到.... 我正在使用 Ubuntu 13.04... - Enissay以上所有答案都是正确的,但我有一个简单的方法在某些情况下可以避免这种情况。
只需要在脚本开头放置这个命令:
set_time_limit(0);
在升级到 WordPress 4.0 时,我遇到了这个问题。默认情况下,WordPress将最大执行时间限制为30秒。
要覆盖默认设置,请将以下代码添加到您的 .htaccess 文件中,该文件位于您的 WordPress安装根目录 中。
php_value max_execution_time 300 //where 300 = 300 seconds = 5 minutes
编辑 php.ini
查找此行:
max_execution_time
将它的值更改为300:
max_execution_time = 300
300 表示 HTTP 请求的执行时间为 5 分钟。
您的脚本正在超时。请查看set_time_limit()函数以增加执行时间。或者对脚本进行性能分析以使其运行更快 :)
.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 方法解决了。
我们可以通过3种不同的方式解决这个问题。
1) 使用php.ini文件
2) 使用.htaccess文件
3) 使用Wp-config.php文件(适用于WordPress)
set restriction to zero
<?php ini_set('max_execution_time', '0'); ?>
要延长您的 max_execution_time
,您可以使用 ini_set
或 set_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 而不带任何警告/错误。