PHP超时不会停止脚本?

zha*_*eng 2 php time timeout max execution

我期待一些错误,如500或超时页面,代码如下:

<?php
      ini_set('max_execution_time',5);
      set_time_limit(5);
      echo 'start';
      sleep(10);
      echo '<br/>hi';
Run Code Online (Sandbox Code Playgroud)

但是,我得到这样的东西:

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';
Run Code Online (Sandbox Code Playgroud)

JRo*_*ero 6

根据php.net中的这个评论你必须使用unix ... "请注意,在Linux下,睡眠时间被忽略,但在Windows下,它算作执行时间." (在Unix/Linux中,睡眠不会被考虑作为执行时间的一部分.)

另外,要使其超时,只需循环永久

<?php
while (true) {
    // i'll error out after max_execution_time
}
Run Code Online (Sandbox Code Playgroud)

要查看它有多长,您可以使用microtime查找执行时间或查询您刚刚设置的max_execution_time变量.

$max_time = ini_get("max_execution_time");
echo $max_time
?>
Run Code Online (Sandbox Code Playgroud)

更新 使用更新的代码,输出符合预期.

Fatal error: Maximum execution time of 5 seconds exceeded in newfile.php on line 7
Run Code Online (Sandbox Code Playgroud)