問題
PHPの一行ずつ出力をデバッグしていたら、ob_flushとflushの両方が失敗していることが分かりましたが、php.iniの設定で大体判断できます。 phpinfo.normal を介して。
(学習ビデオ共有: php ビデオチュートリアル)
解決策
Nginx を改めて見てみると、Nginx には次のような設定があることがわかりました。
fastcgi_buffer_size 128k; fastcgi_buffers 8 128k;
問題は基本的に見つかりました。Nginx は PHP によって出力された情報をバッファリングします。それが 128k に達すると、バッファー データはクライアントに送信されます。次に、最初に次のようにバッファー サイズを減らす必要があります。
fastcgi_buffer_size 4k; fastcgi_buffers 8 4k;
そして、gzip
gzip off;
次に、php で、ob_flush とフラッシュの前に、4K に達するコンテンツを出力します。例:
echo str_repeat(‘ ‘, 1024*4);
この時点で、PHP必要なコンテンツは、ob_flush を通じて 1 行ずつ出力され、通常どおりフラッシュされます。
関連する推奨事項: nginx チュートリアル
以上がnginxでphpフラッシュが失敗する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。