PHP での出力フラッシュ: 処理中のライブ ログの表示
PHP では、スクリプトとしてユーザーのブラウザに出力を表示することが望ましいことがよくあります。スクリプト全体が完了するのを待つのではなく、プロセスを実行します。これは、ログや進行状況の更新をリアルタイムで表示する場合に役立ちます。ただし、デフォルトでは、PHP は出力をバッファリングします。つまり、スクリプトが終了するまで出力はクライアントに送信されません。
'ob_flush()' 十分ですか?
A各エコー呼び出し後に出力をフラッシュする一般的な方法は、ob_flush() 関数を使用することです。ただし、これでは問題は部分的にしか解決されません。出力バッファはフラッシュしますが、実際にはデータをクライアントに送信しません。
PHP または Apache の障害?問題の調査
ob_flush() が機能しない場合は、PHP の構成または Apache 設定のいずれかに問題がある可能性があります。 PHP の設定を確認するには、次のコマンドを実行します。
php -i | grep output_buffering
これにより、出力バッファリングが有効かどうかとバッファのサイズが表示されます。出力バッファリングが無効になっている場合、それが問題の原因ではありません。
究極の解決策
この問題の最終的な解決策は、出力バッファ サイズを 0 に設定することです。これは、出力をバッファリングせずにすぐにクライアントに送信するように PHP に指示します。
ini_set('output_buffering', 0);
Final感想
出力バッファ サイズを 0 に設定すると、各エコー呼び出し後に出力が確実にフラッシュされ、ユーザーがログを表示したり、リアルタイムで更新を進行したりできるようになります。
以上がPHP でライブ ログのリアルタイム出力フラッシュを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。