UPDATEは
このケースを処理するための方法は、出力バッファと適切なHTTPヘッダーの組み合わせです。
HTTP/1.1 Specification Section 14.10より:
HTTP/1.1は、接続が 反応の完了後にクローズされること 信号を送信者の「クローズ」接続オプションを定義します。
我々は接続に加えて、HTTP のContent-Lengthヘッダに沿って渡すのであれば、:近い、ブラウザは、指定された応答長が受信された後、接続を閉じることを知っている:
- 完全な出力データを取得したら、適切なヘッダーをクライアントに送信してください。
- rの処理...しかし、出力を送信しようとしないか、ヘッダーが送信されているため、エラーが発生します。
また、あまりにも多くの処理を行うと、WebサーバーSAPIでスクリプトの実行時間制限を超えて実行できないように注意してください。最後に、ignore_user_abort()
を使用してこの特定のスクリプトの「ユーザ打ち切り」を無視するようにPHPに指示する必要があります。これは、実行中の結果としてブラウザが接続を終了し、PHPが処理を続行するようにするためです。
<?php
ignore_user_abort();
ob_start();
// do stuff, generate output
// get size of the content
$length = ob_get_length();
// tell client to close the connection after $length bytes received
header('Connection: close');
header("Content-Length: $length");
// flush all output
ob_end_flush();
ob_flush();
flush();
// close session if you have one ...
// continue your processing tasks ...
?>
あなたはConnection handlingdocs上のPHPマニュアルのセクションを検討することがあります。
また、出力バッファリングを開始しないでください。その後、送信されるすべての出力をキャプチャし、実際に何かをしたい場合は後で決定することができます。
<?php
echo 'before output buffering';
ob_start();
echo 'after output buffering';
$output = ob_get_contents();
// script's only output to this point will be 'before output buffering'
// I changed my mind, send the output ...
ob_end_flush();
?>
なぜあなたはこれを実行する必要がありますか?もう少し理解を深めるためのコードを少し投稿できますか? –
+1にジョナサンが言った。なぜあなたがこれをやりたいのか、もう少し私たちに教えてください。 –