Nginx環境下でPHP flushが失効する解決方法

780 ワード

問題
PHPプログレッシブ出力を調整したところ、ob_flushflushの両方が失効しました。phpinfoを通じてphp.iniの設定は正常です。
解決方法
またNgixを見に行きます。Ngixには以下のような設定があります。

fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
問題は大体見つけました。NFingxはPHPの出力情報をバッファします。128 kに達したら、バッファのデータをクライアントに送ります。まずこのバッファを小さくします。例えば、

fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
そして、gzipを無効にしなければなりません。

gzip off;
次いで、phpでは、ob_flushおよびflushの前に、4 kまでのセグメントのコンテンツが出力される。

echo str_repeat(‘ ‘, 1024*4);
これにより、PHPは必要なコンテンツをob_flushflushを介して正常に出力することができます。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に一定の助けをもたらしてほしいです。もし疑問があれば、メッセージを残して交流してもいいです。