我期待一些错误,如500或超时页面,代码如下:
<?php
ini_set('max_execution_time',5);
set_time_limit(5);
echo 'start';
sleep(10);
echo '<br/>hi';
但是,我得到这样的东西:
start hi
我做错了吗?
我想要的只是在第5秒超时时看到脚本停止,所以不应该执行第二个回声(我知道这是一个非常奇怪的要求)
任何人都可以轻视,谢谢。
PS:似乎sleep()部分非常分散注意力,我怎么改变这样的代码:
<?php
ini_set('max_execution_time',5);
set_time_limit(5);
echo 'start';
for($i=1;$i<100000000;$i++){
if($i%100==2) echo $i;
else echo '--';
}
echo '<br/>hi';
答案 0 :(得分:6)
根据php.net中的这条评论你必须使用unix ... "Please note that, under Linux, sleeping time is ignored, but under Windows, it counts as execution time."(在Unix / Linux中,睡眠不会被考虑作为执行时间的一部分。)
此外,要使其超时,只需永远循环
<?php
while (true) {
// i'll error out after max_execution_time
}
要查看它有多长,您可以使用microtime找出执行时间,也可以查询刚刚设置的max_execution_time变量。
$max_time = ini_get("max_execution_time");
echo $max_time
?>
<强>更新强> 使用更新的代码,输出符合预期。
Fatal error: Maximum execution time of 5 seconds exceeded in newfile.php on line 7