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

*文
リリース: 2023-03-18 15:44:01
オリジナル
1311 人が閲覧しました

この記事では、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!