有意使 PHP 脚本超时


Purposfully timeout a PHP script

这可能

看起来很奇怪,但我实际上需要一个将超时的PHP脚本,即:执行时间太长,以至于Apache将超时脚本并触发408错误。

这样做的目的是演示使用自定义 408 错误页面捕获 408,以向数据库报告超时。

也许您可能会建议有更好的方法来做到这一点?

如果我没记错的话,我不认为无限循环会像 Apache 500 那样工作。

编辑-------

有人指出,408是客户端错误,那么此外,如果脚本超时,Apache会触发什么错误?

我想要一个实际的例子,而不是一个合成的header(),因为这是要向客户推销的,他们理想情况下会喜欢一个真实世界的例子。

谢谢!

如何从 php 脚本发送 408 状态代码?

<?php
  header("HTTP/1.0 408 Request Timeout");
?>

或者也许

<?php 
  sleep(99999);
?>
<?php
    while(true){
        //to infinity and beyond...
    }
?>

这将做到..

408 是客户端错误:

408 请求超时

客户端未在服务器准备等待的时间内生成请求。

所以你必须telnet <yourhost> 80,只是坐下来等待。当然,如果您想以编程方式执行此操作,您可以通过fsockopen()模拟这一点。

从代码中抛出标头也可能有效。

您不需要页面实际超时。 如果你只是在测试,你可以告诉 PHP 在标头中输出一个 408 代码:

<?php
header("HTTP/1.0 408 Request Timeout");
exit;