我有最简单的脚本:
<?php
if( ini_get('safe_mode') ){
echo "safe mode !";
}else{
echo "NOT safe mode !";
}
set_time_limit(3);
for ($i=0;$i<30;$i++) {
sleep(1);
echo $i;
}
我有输出 不安全的模式 0123456 ....
为什么我的脚本在3秒后没有停止?
(我在SSH控制台中运行)
答案 0 :(得分:3)
花费sleep
的时间不会计入脚本执行时间。来自the manual:
set_time_limit()函数和配置指令max_execution_time仅影响脚本本身的执行时间。在确定脚本运行的最长时间时,不会包括在执行脚本之外发生的任何活动,例如使用system()的系统调用,流操作,数据库查询等。在测量时间真实的Windows上,情况并非如此。
答案 1 :(得分:0)
AS @iainn在他的回答中说,set_time_limit()
只计算PHP脚本的实际处理时间。因此,在睡觉或等待其他过程时,它不会计入限制。 (在Windows上除外。)
但是,要回答标题中的问题:
为了在“实时”3秒后停止它,只需创建一个包含开始时间(以毫秒为单位)的变量,然后在循环内部进行检查。最好在睡觉前。然后,如果它是&gt;循环中只有break
3000毫秒。 ;)