According to a preferred embodiment of the present invention, a persistent
CGI model is used to provide a CGI program extension that captures the advantages
of the presently known CGI model but overcomes many of the related disadvantages.
The persistent CGI program is executed as a sub-process of the web server. The
persistent CGI program receives input from web browsers through standard input
and environment variables and provides output through standard output in the same
manner as existing CGI programs. However, unlike existing CGI programs, the persistent
CGI program is not automatically terminated after output is transmitted to the
web browser by the web server application. Instead, the persistent CGI program
remains active and waits for additional input from the same web browser. This allows
transactions to remain open and, accordingly, state data relating to on-going transactions
can be maintained in between web browser requests. Additionally, since the CGI
process is persistent and maintains communication with the same web browser for
multiple requests, there is no need to instantiate a separate CGI process for each
subsequent request from the same web browser for the same transaction. Therefore,
the persistent CGI programming model of the present invention can reduce system
overhead and streamline system operation.