2009-06-10 11 views
6

デフォルトでは、ページ全体の実行が終了するまでは何も印刷されません。PHPですぐにエコープリントを作成する方法は?

すぐにフラッシュできる機能はありますか?

しかし、ob_end_flush()を何度も呼び出すのではなく、これは私が望むものではありません。

あなたは私を持っていますか?

答えて

8

出力バッファリングがオンになっている場合は、それをフラッシュしてブラウザに何かを出力する唯一の方法です。すぐに出力したい場合は、出力バッファリングをオンにします。それがあなたのコントロールにない場合は、出力バッファリングをオフにするスクリプトのsrartでob_end_flush()を呼び出すことができます。

は、一番上の出力バッファをフラッシュし、オフになります()はob_end_flushを呼び出す(カスタムエコー/印刷機能を記述することなく)がありしかし、いくつかのメッセージが通過させるための方法はありません、といくつかのではありません。

while (@ob_end_flush()); 
+0

1あなたは – karim79

+0

正しいだろうしていることを意味するのですか? – omg

+0

@Shore、はい、それは私の言いたいことです。 ob_end_flush()を呼び出すと、一番上の出力バッファが切り替わります。 –

6

ウェブサーバーによって異なります。 flushを呼び出すと、どんな現在のバッファの出力をフラッシュします、それはリンク先のページで言うように、しかし、開いている:

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

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

mod_gzipのようなApache用のサーバーモジュールは、flush()がクライアントにすぐにデータを送信しない原因となる独自のバッファリングを行うことがあります。

1

開発/テストサーバーで出力バッファをオフにすることができます。出力バッファをオフにしてフラッシュすることができます。 php.ini設定ファイル内の変数output_bufferingを変更してください。

0

ob_end_flush()は、フラッシュするバッファがない場合にスクリプトの先頭で使用される場合に通知をスローします。これは、Cookieまたはヘッダーを設定する予定がある場合には問題となる可能性があります。共有サーバー(Rackspace Reseller)のバッファリングに影響しないことがわかりました。あなたは、その後のエコー/印刷機能がすぐに出力、1回)(うはob_end_flush呼び出すことによって

関連する問題