6

デフォルトでは、ページ全体の実行が完了するまで何も出力されません。

すぐに吐き出す機能はありますか?

ob_end_flush()しかし、複数回呼び出すことはできません。これは私が望んでいることではありません。

あなたたちが私を手に入れたことを願っていますか?

4

4 に答える 4

8

出力バッファリングがオンの場合、それをフラッシュすることがブラウザに何かを出力する唯一の方法です。すぐに出力したい場合は、出力バッファリングをオンにします。それが制御できない場合は、スクリプトの先頭で ob_end_flush() を呼び出すだけで、出力バッファリングがオフになります。ただし、一部のメッセージを通過させたり、一部を通過させたりする方法はありません (カスタムのエコー/印刷関数を作成しないと)。

ob_end_flush() を呼び出すと、一番上の出力バッファがフラッシュされ、オフになります。すべての出力バッファがオフになっていてフラッシュされていることを確認するには、次のように簡単に実行できます。

while (@ob_end_flush());
于 2009-06-10T19:18:43.430 に答える
6

それはあなたのウェブサーバーに依存します。ただし、リンクされたページに記載されているように、フラッシュを呼び出すと、現在開いているバッファーの出力がフラッシュされます。

flush() は、クライアント側の Web サーバーやブラウザーのバッファリング スキームには影響しません。したがって、出力バッファをフラッシュするには、ob_flush() と flush() の両方を呼び出す必要があります。

いくつかのサーバー、特に Win32 では、結果をブラウザーに送信する前にスクリプトが終了するまで、スクリプトからの出力を引き続きバッファーします。

mod_gzip のような Apache 用のサーバー モジュールは、独自のバッファリングを行う場合があり、これにより、flush() によってデータがクライアントにすぐに送信されなくなります。

于 2009-06-10T19:18:21.357 に答える
1

開発/テストサーバーで出力バッファリングをオフにすることができます。php.ini 構成ファイルのoutput_buffering変数を変更します。

于 2009-06-10T19:20:22.333 に答える
0

ob_end_flush() は、フラッシュするバッファがない場合にスクリプトの先頭で使用すると、通知をスローします。Cookie またはヘッダーの設定を計画している場合、これは問題になる可能性があります。共有サーバー (Rackspace Reseller) のバッファリングには影響しないことがわかりました。

于 2009-06-11T01:45:04.350 に答える