ホームページ バックエンド開発 PHPチュートリアル PHPサイクルタイム制御バッファ方式_PHPチュートリアル

PHPサイクルタイム制御バッファ方式_PHPチュートリアル

Jul 13, 2016 pm 05:46 PM
echo for php sleep サイクル マニュアル コントロール 方法 時間 バッファ

for ($i=10; $i>0; $i--)

{ エコー $i;

フラッシュ();

睡眠(1);

?>

PHPマニュアルによると

この関数は、これまでのプログラムのすべての出力をユーザーのブラウザに送信します。

上記のコードは $i を毎秒出力するはずです。しかし、実際には必ずしもそうであるとは限りません。 10 秒間待機した後、すべての出力が同時に表示される可能性があります。

さて、このコードを

に変更しましょう

echo str_pad(" ", 256);

for ($i=10; $i>0; $i--)

{ エコー $i;

フラッシュ();

睡眠(1);

} ?>ほら、この文 ob_end_clean(); を追加すればOKです。実際、ob_end_clean() を ob_end_flush() に置き換えても問題ありません。

注: IE は表示を開始する前に 256 バイトを受信する必要があります。

したがって、前に echo str_pad(" ", 256);

を追加する必要があります。

また変更します。

echo str_pad(" ", 256);

for ($i=10; $i>0; $i--)

{ エコー $i;

ob_flush();//一部を変更

フラッシュ();

sleep(1); } ?>実行してみると、$i も毎秒出力されていることがわかりますか?どうしてこれなの?

心配しないで、php.ini を見てみましょう。

php.ini を開いて、output_buffering を検索すると、output_buffering = 4096 のような設定が表示されます。 Output_buffering という名前のように、この設定の機能は出力をバッファリングすることです。バッファー サイズは 4096 バイトです。

最初のコード部分で、出力が期待どおりにならない理由は、正確には、この output_buffering がすべての出力をバッファリングしているためです。出力は、4096 バイトに達するか、スクリプトが終了するまで送信されません。

2 番目のコードの ob_end_clean() と ob_end_flush() の機能は、バッファリングを終了することです。この方法では、送信前に 4096 バイトのバッファができるまで待つ必要はありません。

3 番目のコードでは、ob_flush() が使用されます。その機能はバッファリングされたデータを送信することですが、バッファリングは終了しないため、各 flash() の前に使用する必要があります。

ob_end_clean()、ob_end_flush()、および ob_flush() を使用したくない場合は、php.ini の Output_buffering を十分に小さい値 (たとえば、0 に設定) に設定する必要があります。 ini_set("output_buffering", "0") を使用してスクリプト内で設定する予定がある場合は、中止してください。このメソッドは機能しません。スクリプトの開始時にバッファリング設定がロードされ、その後バッファリングが開始されるためです。

ob_flush() はバッファリングされたデータを送信するのに、なぜフラッシュ() を使用する必要があるのか​​と疑問に思われるかもしれません。次のコードを使用するだけではだめでしょうか? ?

echo str_pad(" ", 256);

for ($i=10; $i>0; $i--)

{ エコー $i;

ob_flush();

sleep(1); } ?>ob_flush() と flash() の違いに注意してください。前者はPHPのバッファからデータを解放することであり、後者はバッファにないデータまたは解放されたデータをブラウザに送信することです。したがって、バッファが存在する場合は、ob_flush() と flash() を同時に使用する必要があります。

では、ここではflush()が不可欠なのでしょうか?いいえ、データが出力されるとすぐにブラウザーに送信される別の方法があります。次の 2 つのコードでは、flush() を使用する必要はありません。 (output_buffering を 0 に設定すると、ob_flush() と ob_end_clean() も必要なくなります)

ob_implicit_flush(true);

echo str_pad(" ", 256);

for ($i=10; $i>0; $i--)

{ エコー $i;

ob_flush();

睡眠(1) } ?>

ob_implicit_flush(true);

echo str_pad(" ", 256);

for ($i=10; $i>0; $i--)

{ エコー $i;

睡眠(1);

?> 上記の ob_implicit_flush(true) に注意してください。この関数は、出力があるたびに出力を強制的にブラウザーに送信します。この方法では、各出力 (エコー) の後にフラッシュ() を使用してブラウザに送信する必要はありません。

一部のブラウザでは、上記の議論が当てはまらない場合があります。ブラウザにも独自のルールがあるためです。テストにはFirefox1.5、IE6、opera8.5を使用しました。このうち、opera は HTML タグに遭遇しないとスクリプトが終了しない限り出力しないというルールがあるため、正常に出力することができません。 FireFoxとIEは比較的普通です。

引用:Lin Xiさんのブログ

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478579.html技術記事 for ($i=10; $i0; $i--) { echo $i; flash(); }? PHP マニュアルによると、この関数はこれまでのプログラムの出力をすべてユーザーのブラウザ。 上記のコード...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles