How to disable output buffering with PHP and nginx
Maxim Dounin
mdounin at mdounin.ru
Tue Oct 8 15:48:51 UTC 2013
Hello!
On Mon, Oct 07, 2013 at 10:57:14PM -0400, B.R. wrote:
[...]
> I then noticed on the capture that PHP was rightfully sending the content
> in 2 parts as expected but somehow nginx was still waiting for the last
> parto to arrive before sending content to the client.
What makes you think that nginx was waiting for the last part
without sending data to the client?
Please note that checking by a browser as in your check list isn't
something meaningful as browsers may (and likely will) wait for a
complete response from a server. In my limited testing on
Windows, IE needs a complete response, while Chrome shows data on
arrival.
Just in case, it works fine here with the following minimal
config:
events {}
http {
server {
listen 8080;
location / {
fastcgi_pass backend:9000;
fastcgi_param SCRIPT_FILENAME /path/to/flush.php;
fastcgi_keep_conn on;
}
}
}
But, again, testing with fastcgi_keep_conn is mostly useless now,
it's an abuse of the unrelated directive. The fastcgi_buffering
directive is already here in 1.5.6, use
fastcgi_buffering off;
instead if you need to turn off buffering for fastcgi responses.
Just in case, documentation can be found here:
http://nginx.org/r/fastcgi_buffering
--
Maxim Dounin
http://nginx.org/en/donation.html
More information about the nginx
mailing list