http://www.perlmonks.org?node_id=798368


in reply to cgi buffering

Apache has own buffer. You can send spaces as workaround
print "Starting ...<br>\n"; for (my $i=0; $i < 10; $i++) { print $i, (' ' x 1024) , "<br>\n"; sleep 1; }

Replies are listed 'Best First'.
Re^2: cgi buffering
by afoken (Chancellor) on Sep 30, 2009 at 19:44 UTC

    Switch to non-parsed-headers mode (i.e. rename your CGI to nph-*) and generate the HTTP response yourself. Apache won't buffer your response in that case.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
      Hi Alexander, thanks for that. I tried renaming my script to nph-bob.pl :
      #!/usr/bin/perl -w use strict; use CGI qw(:standard -nph); $| = 1; print header; print qq { <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=wind +ows-1252"> <TITLE>the Title</TITLE> </HEAD> <BODY> }; print "Starting ...<br>\n"; for (my $i=0; $i < 10; $i++) { print "$i<br>\n"; sleep 1; } print "</BODY></HTML>"; exit;


      No effect at all, one cgi-bin env is fine, the other waits for the page to complete before displaying it. I notice from the Apache 2 documentation that it no longer buffers like pre 1.3 did, and that there is no need for nph- prefixed scripts (I think it meant that).

      I even tried using "Multipart/mixed" to no avail either. Anyone have any other ideas?

      Thanks much,

      Caesura

      Update : Its actually Server version: Oracle HTTP Server Powered by Apache/1.3.19 (Unix), sorry ;)
Re^2: cgi buffering
by Caesura (Sexton) on Sep 30, 2009 at 16:06 UTC
    Hmmm, thanks for that, but it didn't make any difference to the non-working cgi-bin/ environment. Even with 2048 spaces ;)

    I wonder if there's an option in Apache or the Perl env to stop buffering, that's been set in one env and not the other ...?

    Caesura
      I forgot how big that buffer. Please try 4096 also.