2

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

<?php
      ini_set('max_execution_time',5);
      set_time_limit(5);
      echo 'start';
      sleep(10);
      echo '<br/>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';
4

1 回答 1

6

根据 php.net 中的此评论,您必须使用 unix ... “请注意,在 Linux 下,睡眠时间被忽略,但在 Windows 下,它算作执行时间。” (在 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
于 2012-08-09T04:10:16.397 回答