php timeout - set_time_limit(0); - 不干活

时间:2012-08-17 04:14:49

标签: php timeout execution

我的PHP文件出现问题,执行时间超过30秒。

搜索完成后,我在代码开头添加了set_time_limit(0);,但是文件在30秒后仍然以500 error超时。

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

safe-mode : off

6 个答案:

答案 0 :(得分:27)

检查php.ini

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

ini_set('max_execution_time', 0); //0=NOLIMIT

答案 1 :(得分:5)

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

  

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

Apache <-> mod_fastcgi <-> php processes

文章有其他例子和进一步说明。希望这有助于其他人。

答案 2 :(得分:4)

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

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

我必须承认,我选择30秒的限制是有点武断的 - 我的脚本实际上可以在2秒内逃脱,但考虑到实际应用,我感觉更舒服30秒 - 当然你可以使用任何值你觉得合适。

希望这有帮助!

答案 3 :(得分:2)

ini_set('max_execution_time', 300);

使用此

答案 4 :(得分:1)

结帐,这是来自PHP MANUAL,这可能对您有所帮助。

如果您正在使用PHP_CLI SAPI并收到错误“超出N秒的最大执行时间”,其中N是整数值,请尝试每M秒或每次迭代调用set_time_limit(0)。例如:

<?php

require_once('db.php');

$stmt = $db->query($sql);

while ($row = $stmt->fetchRow()) {
    set_time_limit(0);
    // your code here
}

?>

答案 5 :(得分:0)

我想你必须对 php 说限制时间执行,试试这个。

ini_set('max_execution_time', 0);