2009-09-01 10 views
10

私は10の異なるサーバを接続してデータを取得するPHPスクリプトを持っています。私はそれが第2のものが始まる前に第1の接続の結果を印刷したい。すぐに結果を表示する(PHP)

+0

使用しているコードの例を具体的に説明してください。 –

答えて

23

flushおよび/またはob_flushを使用すると、必要なものを取得する必要があります。ここで

が簡単なデモです:

for ($i=0 ; $i<10 ; $i++) { 
    echo "$i<br />"; 
    ob_flush(); 
    flush(); 
    sleep(1); 
} 

各秒、数は最後までループ/スクリプトを待たずに、ブラウザに送信されます。
(フラッシュおよびob_flushの両方がなければ、それは出力を送信するスクリプトの最後まで待機)


手動でフラッシュのページから引用し、両方必要とする理由についての説明:

バックエンドPHPが使用しているもの(CGI、 Webサーバーなど)のPHPおよび の書き込みバッファをフラッシュします。これにより、 の電流出力がいくつかの注意点があり、 ブラウザに完全にプッシュされます。

フラッシュは()あなたのウェブ サーバーの バッファリング方式を上書きすることができないかもしれないし、それがブラウザでどの クライアント側のバッファリングには影響を与えません。 PHPのユーザスペース 出力バッファリングメカニズムにも影響しません。つまり、ob_flush() とflush()の両方を呼び出してob出力のバッファをフラッシュする必要があります(バッファを使用している場合は )。


これはあなたのために動作しない場合は、マニュアルの2つのページ上のコメントを見て取ることはあなたに

+0

@sshow:私は、この質問が職場で働いていて、実際には何度か尋ねられました。 ^^ –

+0

ありがとう、素晴らしい答え!たくさん助けてくれました。 –

2
を「なぜそれが失敗する可能性があり、」上のポインタのカップルを与えることができます

ob_end_flush http://us.php.net/ob_end_flush

この関数は出力バッファを空にし、出力バッファリングを無効にします。この機能の後のすべてがブラウザにすぐに送信されます。

0

ええと、ob_flushはそれを行う必要があります。私は操作の進捗状況を見たいときに、LOOONGページでこれを常に行います。

関連する問題