32

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

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

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

safe-mode : off
4

6 回答 6

38

检查 php.ini

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

ini_set('max_execution_time', 0); //0=NOLIMIT
于 2012-08-17T04:18:30.157 回答
9

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

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

Apache <-> mod_fastcgi <-> php processes

文章还有其他例子和进一步的解释。希望这对其他人有帮助。

于 2015-07-10T01:36:12.663 回答
4

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

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

我必须承认,我选择 30 秒作为限制有点武断——我的脚本实际上可以用 2 秒代替,但考虑到实际应用,我觉得 30 秒更舒服——当然你可以使用你觉得的任何值合适的。

希望这可以帮助!

于 2014-10-07T14:58:54.587 回答
3
ini_set('max_execution_time', 300);

用这个

于 2012-08-17T04:19:13.220 回答
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
}

?>
于 2012-08-17T04:24:09.830 回答
0

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

ini_set('max_execution_time', 0);
于 2021-07-06T14:14:57.683 回答