我正在尝试在普通的PHP apache脚本(而不是CLI)中使用PHP的set_time_limit()来限制其最大运行时间.它没有对系统调用或类似的东西做任何事情,我们没有使用安全模式(我们是所有者,而不是服务器的管理员).这是Linux(Ubuntu)上的PHP 5.2.4.
简单的测试案例:
ini_set('max_execution_time', 1);
set_time_limit(1);
$i=0;
while ($i++<100000000000) {} // or anything other arbitrary that takes time
die('Done');
Run Code Online (Sandbox Code Playgroud)
预期结果:与超出脚本执行时间有关的内容
实际结果:已完成打印.
我做错了什么吗?(顺便说一句,是的,脚本确实需要并且可以运行太长时间并且需要中止,遗憾的是这不是可以避免的.这不是重点.)
引用手册:
笔记:
set_time_limit() 函数和配置指令 max_execution_time 只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动(例如使用 system() 的系统调用、流操作、数据库查询等)上花费的任何时间。在测量时间是真实的 Windows 上,情况并非如此。
sleep() 是不影响脚本运行时间的函数之一
请参阅手册的 sleep() 页面上的 MPHH 评论
注意:set_time_limit() 函数和配置指令 max_execution_time 只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动(例如使用 system()、sleep() 函数、数据库查询等进行系统调用)上花费的任何时间。