Nginx環境下でPHP flushが失効する解決方法
問題
PHPプログレッシブ出力を調整したところ、
解決方法
またNgixを見に行きます。Ngixには以下のような設定があります。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に一定の助けをもたらしてほしいです。もし疑問があれば、メッセージを残して交流してもいいです。
PHPプログレッシブ出力を調整したところ、
ob_flush
とflush
の両方が失効しました。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_flush
とflush
を介して正常に出力することができます。締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に一定の助けをもたらしてほしいです。もし疑問があれば、メッセージを残して交流してもいいです。