<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 記事の内容に関係のないものがあります PHP コード</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"環境を初期化します...\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 記事が始まります</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<h1>使用 </span><span><span class="hljs-title function_ invoke__">flush</span></span><span>() 効果的ではありません?おそらくあなたのもの Web サーバーのセットアップには問題があります</h1>
<p>存在する PHP 開発中,`</span><span><span class="hljs-title function_ invoke__">flush</span></span><span>()` 函数常被使用来立即将输出发送到客户端,スクリプトが実行される前に均一に出力するまで待つ代わりに。它存在する实现长时间运行的任务、リアルタイムログディスプレイ、或者进度条更新时非常有使用。しかし,多くの開発者が問題に遭遇します:明明调使用了 <code></span><span><span class="hljs-title function_ invoke__">flush</span></span><span>()PHP出力がフラッシュされたとしても、Webサーバー(Apache、Nginxなど)は、バッファがいっぱいになるかスクリプトが終了するまで出力をキャッシュし続けることがあります。一般的な状況:
一部のブラウザは、特に出力が非常に少ない場合、ページのレンダリングを開始する前に一定のデータを待機します。一般的な慣行:
<span><span><?php</span></span><span>
</span><span><span>// PHP出力バッファリングを無効にします</span></span><span>
</span><span><span>while</span></span> <span>(</span> <span><span class="function_ invoke__">ob_get_level</span></span> <span>()></span> <span><span>0</span></span> <span>){
</span><span><span class="function_ invoke__">ob_end_flush</span></span> <span>();
}
</span><span><span>エコー</span></span><span> </span><span><span class="function_ invoke__">str_repeat</span></span> <span>(</span> <span><span>""</span></span> <span>、</span> <span><span>1024</span></span> <span>);</span> <span><span>//ブラウザのレンダリングをトリガーするのにとてもなデータを送信します</span></span><span>
</span><span><span>for</span></span> <span>(</span> <span><span>$ i</span></span> <span>=</span> <span><span>1</span></span> <span>;</span> <span><span>$ i</span></span> <span><=</span> <span><span>5</span></span> <span>;</span> <span><span>$ i</span></span> <span>++){
</span><span><span>エコー</span></span><span> </span><span><span>「処理ステップ<span>$ i</span></span></span> <span>...<br> \ n ";
</span><span><span class="function_ invoke__">flush</span></span> <span>();
</span><span><span class="function_ invoke__">寝る</span></span><span>(</span> <span><span>1</span></span> <span>);
}
</span><span><span>?></span></span><span>
</span></span><p>上記の方法を使使用すると、ほとんどの場合、 <span class="fun">Flush()が</span>普通に有効になることを確認できます。ただし、出力レイテンシは、PHP、Webサーバー、ブラウザの複数のリンクの複雑なな影響の結果であり、レイヤーごとにレイヤーをチェックする必要があることを忘れるれないでください。</p> <span><span><?php</span></span><span>
</span><span><span>//記事の終わりわりに、コンテンツの終わりわりはコンテンツに関連していません</span></span><span>
</span><span><span>エコー</span></span><span> </span><span><span>「記事はロードされています。\ n」</span></span> <span>;</span> <span><span>?></span></span><span>
</span></span></div></div>