ホームページ  >  記事  >  バックエンド開発  >  PHP は ob_flush を使用してピット分析に進みます

PHP は ob_flush を使用してピット分析に進みます

*文
*文オリジナル
2017-12-27 10:41:581360ブラウズ

この記事では、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キャッシュの紹介とob関数の詳細説明

PHP ob バッファリングの簡単な分析と理解

PHP ob_startの使用法の詳細な説明

以上がPHP は ob_flush を使用してピット分析に進みますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。