in reply to output to screen in real time (CGI)

There are a few ways of doing this. None is going to be perfect. As already suggested you need to set autoflush. Likewise you need to end each print with a newline, IIRC some browsers will not render a line until a newline is received (or the document closed). Likewise, your status messages cannot be embedded in a table, would usually have to wait for the table to be closed to be able to render properly. And finally I think a browser may disconnect afterawhile if not data is being received, if these processes take too long you'll have to print to keep the connection open (whitespace would be your best bet).

Another means of doing this is server-push, last I checked it was only supported by Netscape though (it uses the multipart/x-mixed-replace MIME-type).

--
perl -pew "s/\b;([mnst])/'$1/g"

Replies are listed 'Best First'.
Re: Re: output to screen in real time
by abaxaba (Hermit) on Apr 25, 2002 at 01:23 UTC
    Another means of doing this is server-push, last I checked it was only supported by Netscape though (it uses the multipart/x-mixed-replace MIME-type).
    A different method, for IE, is to use client-pull with the active-x object Microsoft.XMLHTTP. As bad as A-X is security wise, this one seems the most benign. Of course, this requires some client-sever communication: Either you need to separate all of your subs, and call each cgi separately, or pass a q-string down to the server and route the cgi execution based on the parameter:

    Accessed via javascript:
    <script language=javascript> var url="nameOfCgi.pl" var httpObj = new ActiveXObject('Microsoft.XMLHTTP'); httpObj.open (GET,url,false); httpObj.send(); return (httpObj); //httpObj.responseText contains the returned html. </script>