php超时-设置时间限制(0);- -不工作

pnwntuvh  于 2022-12-02  发布在  PHP
关注(0)|答案(6)|浏览(172)

我的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
bmvo0sr5

bmvo0sr51#

检查php.ini

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

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

7vhp5slm2#

这是一个旧的线程,但我想我会发布这个link,因为它在这个问题上帮助了我很多.本质上它说的是服务器配置可以覆盖php配置.来自文章:
例如mod_fastcgi有一个名为“-idle-timeout”的选项,它控制脚本的空闲时间。因此,如果脚本在那么多秒内没有向fastcgi处理程序输出任何内容,fastcgi将终止它。设置类似于:

Apache <-> mod_fastcgi <-> php processes

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

8mmmxcuj

8mmmxcuj3#

我通常在主循环中使用set_time_limit(30)(因此每个循环迭代被限制为30秒,而不是整个脚本)。
我在多个数据库更新脚本中执行此操作,这些脚本通常需要几分钟才能完成,但每次迭代不到一秒-保持30秒的限制意味着如果我愚蠢到创建一个脚本,脚本就不会陷入无限循环。
我必须承认,我选择30秒作为限制有点武断-我的脚本实际上可以用2秒来代替,但在实际应用中,我觉得30秒更合适-当然,您可以使用任何您认为合适的值。
希望这对你有帮助!

cczfrluj

cczfrluj4#

ini_set('max_execution_time', 300);

用这个

sxissh06

sxissh065#

看看这个,这是从PHP MANUAL,这可能会帮助你。
如果你正在使用PHP_CLI SAPI并且得到错误“Maximum execution time of N seconds exceeded”(超过最大执行时间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
}

?>
jvlzgdj9

jvlzgdj96#

我想你一定会说限制php的执行时间,试试这个。

ini_set('max_execution_time', 0);

相关问题