この記事では、ob_flush を使用する場合に PHP が毎秒出力できない原理を主に紹介し、ob_flush を使用する PHP の関連原理と Linux で CLI を使用する方法についても詳細に分析します。お役に立てれば幸いです。
具体的な分析は次のとおりです:
関数の実装:
ブラウザは毎秒数値を出力します。
php.ini は次のように構成されています:
バージョン 5.3
implicit_flush = off output_buffering = off
もう 1 つ: 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 中国語 Web サイトの他の関連記事を参照してください。