On 8/10/03 2:46 PM, "Stas Bekman" <[EMAIL PROTECTED]> a écrit :

> Douglas Theobald wrote:
>> The "Searching...Please wait" text does not display until the sleeps are
>> done. Adding $|=1; up top does not help. However, this code does work:
>> 
>> use CGI ();
>> my $r = shift;
>> my $q = new CGI;
>> print $q->header('text/html');
>> print $q->start_html;
>> for (1..263)
>> {
>>     print $q->p("Searching...Please wait");
>> }
>> $r->rflush;
>> # imitate a lengthy operation
>> for (1..3) {
>>   sleep 1;
>> }
>> print $q->p("Done!");
>> 
>> It appears that if I print out over 8k, the buffers flush. Less than that,
>> no flush. Is this proper behavior? And, if so, is there a parameter I can
>> change somewhere to lower the value or force a flush regardless of what's in
>> the buffer? I have tried very hard to find documentation or previous
>> discussion in this group to no avail.
> 
> Sounds like you have a buffering proxy in front of your mod_perl server. Test
> it without any front-end proxy, accessing the back-end server directly.

Pardon my ignorance, but I know next-to-nothing about proxies (pointers for
reading up would be welcome). I setup this custom apache server myself on an
OSX box. OSX ships with perl 5.6, and I wanted a static mod_perl/apache
build with perl 5.8.0 (actually I wanted mp2 and Apache2, but can't get
Apache2 to fireup iff it loads mod_perl.so). So, unless there's a front-end
proxy hidden from me somewhere or configured by default somehow, I don't
think that's my problem. My httpd.conf has all proxy stuff commented out and
should by default send "Pragma: no-cache".

> If you don't believe that it works, you can run strace on the process, to see
> it working correctly. You can see an example here:
> http://perl.apache.org/docs/1.0/guide/debug.html#Detecting_Aborted_Connections

Thanks, I ran ktrace on the code above with an additional "print $q->h3("PID
= $$");" line inserted. Part of it is below. As you thought, it looks like
its working to me - it wrote out three chunks, the first two being 4098
bytes. BTW, looks like somebody needs to sub an 'eq' for a '==' in the httpd
code somewhere. 

dulcinea/theobal> kdump -f ktrace.out
 13247 httpd    RET   read 377/0x179
 13247 httpd    CALL  sigaction(0x1e,0xbfff8650,0xbfff86c0)
 13247 httpd    RET   sigaction 0
 13247 httpd    CALL  gettimeofday(0xbfff86c0,0)
 13247 httpd    RET   gettimeofday 1060559575/0x3f36dad7
 13247 httpd    CALL  stat(0x662f30,0x6621b0)
 13247 httpd    NAMI  "/usr/local/apache/modperl/rflush.pl"
 13247 httpd    RET   stat 0
 13247 httpd    CALL  sigaction(0xe,0,0xbfffa5c0)
 13247 httpd    RET   sigaction 0
 13247 httpd    CALL  dup2(0xf,0x2)
 13247 httpd    RET   dup2 2
 13247 httpd    CALL  stat(0x45e390,0x2a4a34)
 13247 httpd    NAMI  "/usr/local/apache/modperl/rflush.pl"
 13247 httpd    RET   stat 0
 13247 httpd    CALL  chdir(0xbfff7f50)
 13247 httpd    NAMI  "/usr/local/apache/modperl"
 13247 httpd    RET   chdir 0
 13247 httpd    CALL  issetugid
 13247 httpd    RET   issetugid 1
 13247 httpd    CALL  lstat(0xbfff7a00,0xbfff7940)
 13247 httpd    NAMI  "/usr/share/zoneinfo/GMT"
 13247 httpd    RET   lstat 0
 13247 httpd    CALL  open(0xbfff7a00,0,0x60)
 13247 httpd    NAMI  "/usr/share/zoneinfo/GMT"
 13247 httpd    RET   open 4
 13247 httpd    CALL  fstat(0x4,0xbfff79a0)
 13247 httpd    RET   fstat 0
 13247 httpd    CALL  read(0x4,0xbfff7e10,0x1f08)
 13247 httpd    GIO   fd 4 read 56 bytes
       
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\0\0\0\0\0\
0\0\0\^A\0\0\0\^D\0\0\0\0\0\0GMT\0\0\0"
 13247 httpd    RET   read 56/0x38
 13247 httpd    CALL  close(0x4)
 13247 httpd    RET   close 0
 13247 httpd    CALL  write(0x2,0x3f0790,0x49)
 13247 httpd    GIO   fd 2 wrote 73 bytes
       "Argument "en-US" isn't numeric in numeric eq (==) at (eval 124) line
40.
       "
 13247 httpd    RET   write 73/0x49
 13247 httpd    CALL  write(0x3,0x6600a0,0x1002)
 13247 httpd    GIO   fd 3 wrote 4098 bytes
       "HTTP/1.1 200 OK\r
        Date: Sun, 10 Aug 2003 23:52:55 GMT\r
        Server: Apache/1.3.28 (Darwin) mod_perl/1.28\r
        Keep-Alive: timeout=15, max=99\r
        Connection: Keep-Alive\r
        Transfer-Encoding: chunked\r
        Content-Type: text/html; charset=ISO-8859-1\r
        \r
        f14\r
        <?xml version="1.1" encoding="iso-8859-1"?>
        <!DOCTYPE html
                PUBLIC "-//W3C//DTD XHTML 1.1"
                 "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd";>
        <html xmlns="http://www.w3.org/1999/xhtml";
xml:lang="en"><head><title>Untitled Document</title>
        </head><body><h3>PID = 13247</h3><p>Searching...Please
wait</p><p>Searching...Please wait</p><p>Searching...Please wait</p>

Etc.

Reply via email to