5

これは奇妙に思えるかもしれませんが、実際にはタイムアウトする PHP スクリプトが必要です。つまり、実行に時間がかかりすぎて、Apache がスクリプトをタイムアウトし、408 エラーを発生させます。

この目的は、タイムアウトをデータベースに報告するカスタム 408 エラー ページで 408 をキャプチャするデモを行うことです。

おそらく、これを行うためのより良い方法がありますか?

私の記憶が正しければ、Apache が 500 になるように、無限ループが機能するとは思いません。

編集 - - - -

408 はクライアント エラーであることが指摘されています。さらに、スクリプトがタイムアウトした場合、Apache はどのようなエラーを発生させますか?

header()これはクライアントに提案するものであり、理想的には実際の例を希望するため、合成ではなく実際の例が必要です。

ありがとうございました!

4

4 に答える 4

4

PHP スクリプトから 408 ステータス コードを送信するのはどうですか?

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

多分

<?php 
  sleep(99999);
?>
于 2012-05-14T14:36:55.070 に答える
3
<?php
    while(true){
        //to infinity and beyond...
    }
?>

これでいける..

于 2014-01-28T09:01:55.333 に答える
2

408はクライアントエラーです:

408リクエストタイムアウト

サーバーが待機する準備ができている時間内に、クライアントは要求を生成しませんでした。

だからあなたはtelnet <yourhost> 80ただ座って待つ必要があるでしょう。もちろんfsockopen()、プログラムで実行したい場合は、これをエミュレートできます。

コードからヘッダーをスローすることも機能する可能性があります。

于 2012-05-14T14:38:53.920 に答える
1

実際にタイムアウトするページは必要ありません。テストだけの場合は、ヘッダーに 408 コードを出力するように PHP に指示できます。

<?php
header("HTTP/1.0 408 Request Timeout");
exit;
于 2012-05-14T14:37:32.450 に答える