7

出力バッファリングにいくつか問題があります。主に、ob_gzhandler コールバックを使用して出力バッファリングを実行しようとしていますが、サポートされていない圧縮タイプを使用しているというメッセージが表示され続けます。すべてが有効になっています。問題は、スクリプトの開始時に ob_get_level() を実行するとレベル 1 が生成されることだと思います。php.ini では、output_buffering が 4096 に設定されています。

次のようなものを実行すると:

while(ob_get_level() > 0){
   ob_end_clean();
}

その後、ob_gzhandler コールバックを使用して ob_start() を正常に実行できます。しかし、それが問題になるべきかどうか疑問に思っています。これを読んでパフォーマンスが向上する可能性があるため、スクリプト中にさまざまな時点で ob_clean() を呼び出します。私はここで何をすべきかについて確信が持てません。

乾杯。

4

1 に答える 1

8

デフォルトで出力バッファリングが有効になっています(ドキュメントを参照)。これは、基本的に、すべてのPHPスクリプトがob_start()で始まることを意味します。

すべてのPHPスクリプトのデフォルトのOBを無効にする場合は、php.iniで。を設定しoutput_buffering = Offます。

この特定のスクリプトのデフォルトのOBのみを無効にしたい場合は、whileループを使用してください。これは非常に正しいことです。

ob_cleanに関しては、バッファにある出力を削除してもよろしいですか?ページの読み込みが大幅に遅い場合を除いて、IMOは実際には必要ありません。それを最適化することについて心配する必要はありません(少なくとも今はそうではありません)。

于 2010-09-04T09:19:53.813 に答える