この記事の例は、PHP が ob_flush を使用して毎秒出力できない原理を説明しています。皆さんの参考に共有してください。具体的な分析は次のとおりです:
関数の実装:
ブラウザは毎秒数値を出力します。
php.ini は次のように構成されています:
バージョン 5.3
implicit_flush = off
output_buffering = off
別の: Output_buffering がオンになっているかどうかを確認します。次のことができます:
var_dump(ini_get('output_buffering'));
さて、このコードをもう一度見てみましょう:
<?php $i = 3; ob_start(); while ($i--) { echo $i, "<br />"; ob_flush(); flush(); sleep(1); } ob_end_clean(); ?>
しかしなぜ: このコードは毎秒出力できないのでしょうか? ?
原因分析:
apache の動作原理: アドレスにアクセスすると (リクエストを送信すると)、Apache は PHP を開始し、PHP の実行はページ レベルで行われます。つまり、実行可能コードがある場合、それは Apache にスローされます。 、Apache はそれをブラウザーにスローして結果を表示します
これを実現するにはどうすればよいですか?
cli が別の方法で結果を表示する場合、その違いは何ですか?
linux cmd:
php5 test.php
は、Apache や Web サービスを経由せずに php によって直接実行され、次のように実現できます:
<?php $i = 3; while ($i--) { echo $i, "\n"; sleep(1); } ob_end_clean(); ?>
この記事が皆様の php プログラミング設計に役立つことを願っています。
毎秒出力できない ob_flush を使用した PHP の原理分析に関する関連記事については、PHP 中国語 Web サイトに注目してください。