現在の位置: ホーム> 最新記事一覧> Flush()を使用してリアルタイムコンテンツ出力を実現する方法は? PHP実践スキル分析

Flush()を使用してリアルタイムコンテンツ出力を実現する方法は? PHP実践スキル分析

gitbox 2025-08-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// コードのこの部分は、テキストの内容とは何の関係もありません,たとえば、デモンストレーションのみ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"スクリプトの実行を開始します...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"出力コンテンツを準備します...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * タイトル:それを使用する方法 flush() リアルタイムコンテンツ出力?PHP 実践的なスキルの分析
 *
 * 存在する PHP 真ん中,デフォルトで,Webページのコンテンツは、スクリプトが実行されるまで一度にクライアントブラウザに送信されます。。
 * これは、プログラムを長時間実行する必要がある場合を意味します,用户存在する等待时看不到任何反馈,貧弱な経験。
 * この問題を解決するために,PHP 提供された flush() 関数,バッファのコンテンツは即座にブラウザに送信できます,コンテンツを実装します“リアルタイム出力”。
 *
 * この記事では詳細に紹介します flush() 使い方,并組み合わせた实战技巧帮助你存在する项目真ん中提升用户体验。
 */</span>

</span><span><span class="hljs-comment">// 1. flush() 基本原則</span></span><span>
</span><span><span class="hljs-comment">// flush() 関数用于强制将 PHP 出力バッファーのコンテンツはクライアントに送信されます。</span></span><span>
</span><span><span class="hljs-comment">// しかし,それはそれに注意する必要があります,flush() それはクリアされません PHP 出力バッファー,現在のバッファコンテンツをクライアントにプッシュしようとしているだけです。</span></span><span>

</span><span><span class="hljs-comment">// 2. 組み合わせた ob_flush()</span></span><span>
</span><span><span class="hljs-comment">// 存在する实际应用真ん中,なぜなら PHP 出力バッファリングはデフォルトで有効になります(Output Buffering),個別に呼び出されます flush() おそらく機能していません。</span></span><span>
</span><span><span class="hljs-comment">// したがって,一般協力 ob_flush() 使用,最初にクリアします PHP バッファ,もう一度使用してください flush() ブラウザにプッシュします。</span></span><span>
</span><span><span class="hljs-comment">//</span></span><span>
</span><span><span class="hljs-comment">// 例:</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt;= </span><span><span class="hljs-number">5</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在の進捗:第 <span class="hljs-subst">$i</span></span></span><span> ステップが完了しました...&lt;br&gt;";
    </span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);  </span><span><span class="hljs-comment">// シミュレーションの時間式操作</span></span><span>
}

</span><span><span class="hljs-comment">// 3. ブラウザとサーバーのキャッシュを閉じることの影響</span></span><span>
</span><span><span class="hljs-comment">// ブラウザとサーバーのキャッシュメカニズムは、コンテンツのリアルタイムディスプレイを妨げる可能性があります。</span></span><span>
</span><span><span class="hljs-comment">// 推奨設定 HTTP 頭のキャッシュを無効にします:</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Cache-Control: no-cache"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Pragma: no-cache"</span></span><span>);

</span><span><span class="hljs-comment">// 4. 閉鎖 gzip 圧縮</span></span><span>
</span><span><span class="hljs-comment">// サーバーが有効になっている場合 gzip 圧縮,flush() 障害の可能性,因为圧縮后内容必须完整才能解压。</span></span><span>
</span><span><span class="hljs-comment">// 可以尝试存在する PHP 配置或服务器配置真ん中閉鎖 gzip,或者针对リアルタイム出力页面禁用。</span></span><span>

</span><span><span class="hljs-comment">// 5. 暗黙の更新を使用してください</span></span><span>
</span><span><span class="hljs-comment">// 合格 ini_set('implicit_flush', 1) 暗黙の更新を有効にすることができます,PHP 存在する每次输出后自动调用 flush()。</span></span><span>
</span><span><span class="hljs-comment">// 使用することもできます ob_implicit_flush(true) 同じ効果を達成します。</span></span><span>

</span><span><span class="hljs-comment">// 6. 出力形式とコンテンツに注意してください</span></span><span>
</span><span><span class="hljs-comment">// ブラウザは、レンダリングをトリガーするのに十分なコンテンツを必要とします,十分に出力するか、いくつかのスペースで埋めることをお勧めします。</span></span><span>

</span><span><span class="hljs-comment">// 7. 实战例总结</span></span><span>
</span><span><span class="hljs-comment">// 組み合わせた上述方法,完整例如下:</span></span><span>

<span class="hljs-comment">/*
&lt;?php
header("Content-Type: text/html; charset=utf-8");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

ob_implicit_flush(true);
while (</span></span><span><span class="hljs-doctag">@ob</span></span><span>_end_flush()); // 閉鎖所有输出缓冲

for ($i = 1; $i &lt;= 10; $i++) {
    echo "スケジュール:$i / 10&lt;br&gt;";
    echo str_repeat(' ', 1024); // 出力に記入します,ブラウザがすぐにレンダリングするのを手伝ってください
    flush();
    sleep(1);
}
?&gt;
*/

</span><span><span class="hljs-comment">// 合格以上方式,スクリプトが長い間実行されている間、ユーザーの待機エクスペリエンスを大幅に向上させることができます,リアルタイムでコンテンツの更新を参照してください。</span></span><span>

</span><span><span class="hljs-comment">// 結論</span></span><span>
</span><span><span class="hljs-comment">// flush() 存在する PHP 实战真ん中是一个非常实用的技巧,尤其适合スケジュール显示、日志リアルタイム出力等场景。</span></span><span>
</span><span><span class="hljs-comment">// それがどのように機能するかを理解してください,サーバーを適切に構成します PHP 設定,最大効果を達成することによってのみ。</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>