web-dev-qa-db-ja.com

Nginx + PHP最大出力制限

Php 5.5(fpm)とnginx 1.10がインストールされています(gzipが1に構成されています)。 Ubuntuで実行しています。

大きな出力(2 mb以上)を「エコー」していると、520kb付近で突然停止します。

しかし、同じプログラムをphp-cliで実行すると、すべてをターミナルに「エコー」するのに問題はありません。

また、adminerを介したmysqlダンプのダウンロードは途中で停止します。つまり、不完全なファイルがダウンロードされます(正しい合計出力が数MBで大きい場合)。

これを修正する方法は?

私のプログラムには何の問題もありません。ループがエコー「helloworld」を噴出するのに十分な長さの単純なものでさえ、特定のバイト制限で停止します。

この問題の原因がnginx側なのかphp側なのかわかりません。

6
hakacadera

バッファリングを無効にしてみてください:

fastcgi_buffering off;

デフォルトでオンになっています。

これにより、PHP内からもう少し制御できるようになりますが、以前はブロックしていなかったフラッシュ操作がブロックされる可能性があることに注意してください。また、Nginxが遭遇する可能性のあるバッファリングの問題も克服します。私はそれが問題であることにお金をかけます。 Nginxのバッファは効率的ですが気まぐれです。

1
Zenexer