在 PHP CLI 中设置 max_execution_time

新手上路,请多包涵

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

但是有什么方法可以为一些我不想拥有“无限时间”的自由而只想控制这些脚本的脚本显式设置 max_execution_time 吗?

如果您认为在 superuser.com 上可能会更好地回答这个问题并且有权移动它,那就去做吧。 :)

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

 php -d max_execution_time=5 script.php

原文由 Radek Simko 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 565
2 个回答

文档 说在命令行模式下运行时,默认值为 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

原文由 Jon 发布,翻译遵循 CC BY-SA 3.0 许可协议

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() 函数、数据库查询等

原文由 stivlo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题