1

PHPスクリプトからの継続的な出力を表示する必要があります。スクリプトは、デバイスからのログデータの印刷とスリープのループにとどまります。私の問題は、スクリプトが完了する前にPHPまたはApacheにデータを出力させることができないことです。

出力バッファをフラッシュするためのすべてのコマンドを試し、PHPとApacheの両方の構成ファイルを調べて、無効にするバッファリングの種類を探しました。

これはWindows上のApacheとPHPで行うことができますか、それとも他のプラットフォームを検討する必要がありますか?

4

3 に答える 3

3

これを実現するための最良の方法(最も信頼性が高くクリーンな方法)は、作業を行うサーバー側スクリプトと、ステータスを返す別のサーバー側スクリプトをポーリングするクライアント側AJAXスクリプトを使用することです。Webでは、最適化を実現するためにデータがさまざまなレベルでバッファリングされるため、目的を達成することは困難です。

于 2010-06-24T06:47:49.983 に答える
1

これらのフラッシュを使用して、すでに使用した出力バッファコマンドをフラッシュし、1024バイトの長さのHTMLコメントをスローします。サーバーではなく、ブラウザの問題である可能性が高いからです。

ああ、 COMETアプリケーションを探しているようです

http://www.zeitoun.net/articles/comet_and_php/start

于 2010-06-24T06:46:44.390 に答える
0

PHPのoutput_buffering設定はデフォルトで0(つまりオフ)ですが、それを調査したことは間違いありません。

@Palantirの提案はおそらく良いものだと思います。ログエントリをローカルファイルに書き込み、そのファイル(またはその一部)をクライアントに提供します。クライアントは、あなたが望む頻度で再要求することができます。これには、ブラウザのバッファがいっぱいにならないという利点もあります(つまり、ログデータをクライアントに無限に送信し続けるべきではありません

しかし、それはあなたの質問ではありませんでした。

次のような簡単なスクリプトで出力バッファリングの問題を再現できますか?

<?php
while (TRUE)
{
    echo 'x';
    flush();
    sleep(1);
}
?>
于 2010-06-24T07:10:51.290 に答える