How to disable buffering when using FastCGI?
mdounin at mdounin.ru
Tue Oct 13 21:25:07 MSD 2009
On Tue, Oct 13, 2009 at 04:20:00PM +0200, Nicolas Grilly wrote:
> On Tue, Oct 13, 2009 at 13:19, Maxim Dounin <mdounin at mdounin.ru> wrote:
> > On Tue, Oct 13, 2009 at 12:17:05PM +0200, Nicolas Grilly wrote:
> >> Is there a way to disable buffering when using FastCGI? (for a Comet
> >> style application)
> >> Is there an option "fastcgi_buffering off", working like the option
> >> "proxy_buffering off" in the HTTP proxy module?
> > No, there is no such option. Buffering can't be disabled for
> > fastcgi.
> Hello Maxim,
> Is there no such option just because nobody implemented it? Or is it
> because of some kind of technical constraint?
Something like this. FastCGI requires buffer processing which
isn't compatible with current code for unbuffered connections.
> Do you recommend to people developing Comet style application to use
> HTTP proxying instead of FastCGI?
For now you should either close & reopen connections, or use HTTP
> Is it difficult to implement the option "fastcgi_buffering off", using
> the same technique as in the source code of module HTTP proxy?
Current "proxy_buffering off" implementation is something wierd
and should be nuked, IMHO. The same implementation for FastCGI
just won't work.
I believe buffering control in upstream module (which includes
fastcgi, proxy and memcached) should be changed to something more
flexible. In particular, fastcgi should be aware of FastCGI
record boundaries, and shouldn't try to buffer too much as long as
it got full record.
I've posted some preliminary patches for this as a part of backend
keepalive support work, but they are a bit stale now.
More information about the nginx