[FASTCGI] flush to client before receive complete

Ari Koponen juniper81 at gmail.com
Wed Feb 11 15:46:08 EST 2009


On Wed, Feb 11, 2009 at 8:39 PM,  <jon at melodis.com> wrote:
> Hello,
>
> I'm using FCGI in an application where the client streams data over
> chunked http to apache for several seconds.
>
> I would like to sometimes send a response to the client before the client
> is finished streaming data to apache.
>
> The main loop in my barebones cgi program looks like this:
>
> while (FCGI_Accept() >= 0)
> {
>  /* send result back to client right away */
>  char sz[] = "Content-Type: text/html\r\n\r\nEarly Result\n";
>  fwrite(sz, 1, strlen(sz), stdout);
>  fflush(stdout);
> }
>
> When I stream data to this fcgi program I don't receive results until all
> data is finished streaming to apache.  I'm expecting to get results right
> away.  (I've tested my client to make sure it can receive results early.)
>
> Does anyone know if this a basic limitation of apache or the http
> protocol, or if there is a fcgi workaround, or apache config workaround?

Just a thought: Have you tried the -flush option for the mod_fastcgi.
>From the Docs:

"FastCGI application output is buffered by default. This is not the
case for CGI scripts (under Apache 1.3). To override the default
behavior, use the -flush option (not available for dynamic
applications)."

I don't have experience from this issue though..


More information about the FastCGI-developers mailing list