设置1秒的时间限制不会在1秒后停止脚本

时间:2015-11-19 15:07:18

标签: php time-limiting

我正在调用可能需要一段时间的shell命令,应该在5分钟后中断。无论如何,这似乎不起作用。

我把它归结为以下测试代码:

<?php

set_time_limit(1);
echo 'TL = ' . set_time_limit(1) . PHP_EOL;
sleep(5);
echo 'finished, not interrupted';

这给了我以下输出:

TL = 1 finished, not interrupted

因此看起来时间限制设置正确 - 但脚本仍然运行5秒钟。

我使用PHP版本5.6.11和mod_php

2 个答案:

答案 0 :(得分:1)

PHP时间限制仅在程序实际执行时强制执行。 sleep延迟sleep延迟并不一定如此,as per the manual

  

注意:set_time_limit()函数和配置指令   max_execution_time仅影响脚本的执行时间   本身。花在执行之外的活动上的任何时间   使用system(),流操作等系统调用的脚本   确定最大值时不包括数据库查询等   脚本运行的时间。在Windows上不是这样   测量时间是真实的。

答案 1 :(得分:1)

花费$user = User::with(['address'])->find($id); 时间不计入脚本执行时间。