在 PHP CLI 中设置max_execution_time

2022-08-30 09:47:03

我知道PHP CLI通常被使用,因为它没有时间限制和主要,因为它不使用Apache线程/进程。

但是,有没有办法为一些脚本显式设置max_execution_time,我不想拥有“无限时间”的自由,只想控制这些脚本?

如果您认为这个问题在 superuser.com 上可以更好地回答,并且有权移动它,请执行此操作。:)

编辑:我一直在谷歌搜索,找到了正确的参数:

php -d max_execution_time=5 script.php

答案 1

文档指出,在命令行模式下运行时,默认值为 0(无限制)。它并没有说你不能覆盖它:

set_time_limit(10); // this way
ini_set('max_execution_time', 10); // or this way

编辑:我只是自己尝试了一下,它按预期工作。

F:\dev\www>c:php -f index.php
PHP Fatal error:  Maximum execution time of 2 seconds exceeded in F:\dev\www\index.php on line 3

Fatal error: Maximum execution time of 2 seconds exceeded in F:\dev\www\index.php on line 3

答案 2

set_time_limit() 适用于 CLI 脚本。

<?php 
set_time_limit(1); //in seconds
for (;;);
?>

一秒钟后返回,并显示以下错误消息:

PHP Fatal error:  Maximum execution time of 1 second exceeded in \
/home/stivlo/test.php on line 4

最初我尝试使用sleep(),但没有应用时间限制。正如@Jon建议的那样,使用真正的计算,如无限循环。

我在sleep()PHP页面中发现了这个有趣的评论:

注意:set_time_limit() 函数和配置指令max_execution_time只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在执行脚本之外发生的活动(如使用 system()、 sleep() 函数、数据库查询等的系统调用)上花费的任何时间


推荐