ホームページ  >  記事  >  バックエンド開発  >  PHP では、ob_flush を使用して原理分析を毎秒出力できません

PHP では、ob_flush を使用して原理分析を毎秒出力できません

高洛峰
高洛峰オリジナル
2016-12-22 16:32:341037ブラウズ

この記事の例は、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 サイトに注目してください。

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