Re: Server push applications using FastCGI
Fri, 26 Jul 1996 15:16:24 -0500

Message-Id: <>
Date: Fri, 26 Jul 1996 15:16:24 -0500
To: (Ron Newman)
Subject: Re: Server push applications using FastCGI
In-Reply-To: <>; from Ron Newman on Jul 26, 1996 14:50:15 -0400

On 7/26, Ron Newman uttered the following other thing:
> I asked whether a FastCGI program can intermittendly stream output
> to the client, based on a possibly false impression that a CGI program
> can do so only if written as a non-parse-header (NPH) program.  
> Mark Brown replied:
>     A Web server that implements FastCGI sends application data to the
>     client as long as there is any data to send; the data doesn't linger
>     indefinitely in the server's buffer.  (Actually, the spec is silent on
>     the issue, because I didn't realize it *was* an issue.  The Open
>     Market server treats NPH and non-NPH CGI scripts the same with respect
>     to buffering.  As a result of your query the spec will improve;
>     thanks!)
> I based my question on statements in the book "Build a Web Site"
> by net.Genesis, pages 348-351.  This give an example of an
> NPH server-push script, and claims:
>    "The obvious question is why this has to be an NPH script 
>     in order to work.  With regular CGI scripts, the server waits
>     patiently until the CGi program has completed its processing.
>     Then once it has received all output from the CGI program,
>     it sends a response to the client.  But our sample program
>     is supposed to send each one of the parts every ten seconds.
>     Without an NPH script, the server would not send any of 
>     the parts to the client until it had received all the parts
>     from the program.  The server would then take the entire
>     response and send it to the client, which would completely
>     ruin the functionality of the program."
> The CGI spec itself seems to be silent on this issue.

Yes, the CGI spec is silent.  Netscape (or Netsite) never used
buffering, and they introduced the concept of server-push.  NCSA 1.3
and 1.4 (and earlier) used buffered I/O, so they required you to use
an NPH script.  The CGI "spec" (ie, the CGI ietf draft) was drafted
quite a bit after either of these.  NCSA 1.5 doesn't do buffering,
Openmarket doesn't do buffering, and I'm not sure about the latest
Apache, but I think they don't do buffering.

On the other hand, remember that the CGI script can't use buffering
itself, either, or it doesn't matter if the server does.


 Brandon Long           "Understanding is a three-edged sword"
 HTTPd/SDG/NCSA                -- Kosh (Babylon 5)         Don't worry, these aren't even my views.