set_time_limit()文件级超时PHP

twh00eeo  于 2023-03-16  发布在  PHP
关注(0)|答案(1)|浏览(109)
<?php
echo '<html><body>';
set_time_limit(1);
$i = 0;
while(++$i < 100000001){
        if($i % 100000 == 0){
                echo $i / 100000, "<br/>\n";
        }
}
echo "done.<br/>\n";

// will not echo 'done.'.
?>

上面的代码一直回显echo $i / 100000, "<br/>\n";直到1秒,然后停止执行,因为我使用了set_time_limit(1);
但我希望它只在完整循环在1秒内执行时才回显,否则我希望弹出或显示一条消息timeout or cannot perform execution in 1 sec,而不是回显。
在PHP中有可能以某种方式实现这一点吗?

kgsdhlau

kgsdhlau1#

set_time_limit(1)不适用于此任务。请使用microtime检查脚本的运行时。

$stop = microtime(true) + 1;
$i = 0;
while(microtime(true) < $stop){
        if(++$i % 1000000 == 0){
                echo $i / 1000000, "<br/>\n";
        }
}
echo "done.<br/>\n";

输出:

1
2
3
4
5
6
7
8
9
10
11
done.

Test on 3v4l.org

相关问题