Re: PIPE and mod_perl2

Denis Spichkin <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <CALWxWOOekz7t3q=ejwErGcnLgebqDE8mP2gs+ypKoAFGkMTEbw@mail.gmail.com>
Thank you for your replay

I think I have find the way of solution of my problem
the difference between situation when output is shown gradually and
when output is shown at once
is:
when: Transfer-Encoding	chunked
and unset Content-Length
the output show immediately without delay

and when:
 Transfer-Encoding: is absent
and Content-Length is set for axample Content-Length	280
 output will be show only after load all page (size 280 )

so now I need find out how generate page with out Content-Length in mod_perl


2011/12/5 Torsten Förtsch <[email protected]>:
> On Monday, 05 December 2011 11:19:51 Denis Spichkin wrote:
>> Trying to write a program for mod_perl2  that gradually display its
>> output such as output from "ping" (output during PIPE execution).
>>
>> For example
>> http://www.websitepulse.com/help/testreq.php?host=www.ya.ru&location=9&type=
>> 1&singletestpage=ping-test&pass=&ttref=http%3A%2F%2Fwww.websitepulse.com%2F&
>> __=1323068838832
>>
>> At the moment I was able display all output at once.  That completely
>> unacceptable for this type of program
>>
>>         my $ping = '/bin/ping';
>>         my $count = '-c 10';
>>         open (PIPE, "$ping $count $param |");
>>         if (!<PIPE>) {
>>                 $r->print("Error: can't open the pipe $!");
>>                 return OK;
>>                 };
>>
>>         while (<PIPE>) {
>>             $r->write($_); # tried $r->print and $r->puts......with
>> the same result
>>             $r->write('<br />');
>>             };
>>
>>         close (PIPE);
>>
>>
>> Please if anyone know how possible gradually display output in
>> mod_perl2 help me........
>
> I believe your program works as expected. The rest is a browser issue. Try
> this one on the command line:
>
> perl -MIO::Socket::INET -le '
>  my $s=IO::Socket::INET->new($ARGV[0].":80");
>  $s->print("GET $ARGV[1] HTTP/1.0\r\nHost: $ARGV[0]\r\n\r\n");
>  while(<$s>) {
>    print time."\t".$_;
>  }' www.websitepulse.com
> '/help/testreq.php?host=www.ya.ru&location=9&type=1&singletestpage=ping-
> test&pass=&ttref=http%3A%2F%2Fwww.websitepulse.com%2F&__=1323068838832'
>
> Here I get the output:
>
> 1323076533      HTTP/1.1 200 OK
>
> ...
>
> 1323076533      </b></td></tr><tr bgcolor=#F5F5F5><td nowrap>64 bytes from
> www.yandex.ru (77.88.21.3): icmp_seq=0 ttl=56 time=158 ms
>
> 1323076534      </td></tr><tr bgcolor=#F5F5F5><td nowrap>64 bytes from
> www.yandex.ru (77.88.21.3): icmp_seq=1 ttl=56 time=158 ms
>
> 1323076535      </td></tr><tr bgcolor=#F5F5F5><td nowrap>64 bytes from
> www.yandex.ru (77.88.21.3): icmp_seq=2 ttl=56 time=158 ms
>
> 1323076536      </td></tr><tr bgcolor=#F5F5F5><td nowrap>64 bytes from
> www.yandex.ru (77.88.21.3): icmp_seq=3 ttl=56 time=158 ms
>
> 1323076537      </td></tr><tr bgcolor=#F5F5F5><td nowrap>64 bytes from
> www.yandex.ru (77.88.21.3): icmp_seq=4 ttl=56 time=158 ms
>
> 1323076537      </td></tr><tr bgcolor=#F5F5F5><td nowrap>
>
> You see the first few lines come in at the same time. Then between each of the
> ping output lines is an interval of 1 sec.
>
> The reason why you don't see it immediately in the browser window is the
> browser rendering.
>
> Have a look also at:
>
> http://foertsch.name/ModPerl-Tricks/ServerPush.shtml
> http://foertsch.name/ModPerl-Tricks/req-hand-over.shtml
>
> Torsten Förtsch
>
> --
> Need professional modperl support? Hire me! (http://foertsch.name)
>
> Like fantasy? http://kabatinte.net
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.