Perl CGI. no output until backend script is done


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl CGI. no output until backend script is done
# 1  
Old 08-13-2010
Perl CGI. no output until backend script is done

It is a basic Perl CGI question, I want to print out "Processing ... " while backend script /script/wait.pl is still running.

But acctually, nothing appeared in browser untill /script/wait.pl finished.


Code:
 
print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '</head>';
print '<body>';
print '<h2>Processing ... </h2>';
`/script/wait.pl`;
print '</body>';
print '</html>';

# 2  
Old 08-13-2010
Perl buffers output on stdout by default untill the buffer is full, or a newline is found. You can force output either by adding ',"\n"' to the end of your print statements, or by disabling output buffering by adding this line near the top:
Code:
$| = 1;

But even then it's not guaranteed that the browser will start rendering the page before it received all the content.
# 3  
Old 08-13-2010
Hi,
It should print..What is the contents of wait.pl? Do you see anything in the error_log of your webserver?

-Raja
# 4  
Old 08-13-2010
Quote:
Originally Posted by pludi
Perl buffers output on stdout by default untill the buffer is full, or a newline is found. You can force output either by adding ',"\n"' to the end of your print statements, or by disabling output buffering by adding this line near the top:
Code:
$| = 1;

But even then it's not guaranteed that the browser will start rendering the page before it received all the content.
$| doesn't work, To make it simple, I tested following script. I expect "OK, starting time consuming process " appeared first, then "All done" aftter 5 seconds. But they all appeared all together after 5 secs.

BTW: I use apache2 with mod_perl2

Code:
#!/usr/bin/perl -wT

use strict;
$| = 1;

print "Content-type: text/plain\n\n";

print "OK, starting time consuming process ... \n";


for ( my $loop = 1; $loop <= 5; $loop++ ) {
    print "Iteration: $loop\n";
    ## Perform some time consuming task here ##
    sleep 1;
}
print "All Done!\n";


Last edited by honglus; 08-13-2010 at 10:18 AM..
# 5  
Old 08-19-2010
I found two solutions for the issue.

Solution #1

Code:
#!/usr/bin/perl -w
use CGI qw(:standard);
$|=1;
my $r = shift;
print header('text/html');
print start_html;
$r->print ("Processing ... <br>");
foreach $i (1..2) {
    sleep 2;
   $r->print ("Item .. $i <br>");
}
$r->print ("DONE <br>");
print end_html;

Solution #2

Code:
 
#!/usr/bin/perl -w
use CGI qw(:standard);
my $r = shift;
print header('text/html');
print start_html;
print br ("Processing ... ");
 $r->rflush;
foreach $i (1..2) {
    sleep 2;
    print br  ("Item .. $i ");
    $r->rflush;
}
print br ("DONE");
print end_html;

For more information, please check my post
http://honglus.blogspot.com/2010/08/resolving-perl-cgi-buffering-issue.html
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Not able to copy the file in perl cgi script

Hello experts, I am facing an very typical problem and hope the issue can be solved. I have a page download.cgi in /cgi-bin folder. use CGI; use CGI::Carp qw ( fatalsToBrowser ); use File::Copy copy("C:\\Program Files\\Apache Software... (8 Replies)
Discussion started by: scriptscript
8 Replies

2. Shell Programming and Scripting

Perl CGI : unable to download the excel sheet from perl cgi page

Hi All, I have written an cgi perl script that displays an image(Excel image) and when clicked on that Image I need to download a excel sheet. I made sure that excel sheet exists in the folder with the given name but still I am not able to download the sheet. print "<center><table... (2 Replies)
Discussion started by: scriptscript
2 Replies

3. Shell Programming and Scripting

Perl cgi pages out of cgi-bin folder in WINDOWS

Hi team, I have a typical problem with cgi pages in apache webserver in WINDOWS I am able to execute(display) the pages that are saved in cgi-bin folder. But I am not able to execute the pages stored in htdocs or other folder other than cgi-bin folder. Could anyone please let me know how... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

Perl : embedding java script with cgi perl script

Hi All, I am aware that html tags can be embedded in cgi script as below.. In the same way is it possible to embed the below javascript in perl cgi script ?? print("<form action="action.htm" method="post" onSubmit="return submitForm(this.Submitbutton)">"); print("<input type = "text"... (1 Reply)
Discussion started by: scriptscript
1 Replies

5. Programming

CGI Perl script to execute bash script- unable to create folder

Hi I have a bash script which takes parameters sh /tmp/gdg.sh -b BASE-NAME -n 1 -s /source/data -p /dest/data/archive -m ARC gdg.sh will scan the /source/data and will move the contents to /dest/data/archive after passing through some filters. Its working superb from bash I have... (0 Replies)
Discussion started by: rakeshkumar
0 Replies

6. UNIX and Linux Applications

phonon-backend-gstreamer vs phonon-backend-vlc vs phonon-backend-xine

phonon-backend-gstreamer vs phonon-backend-vlc vs phonon-backend-xine What are the advantages and disadvantages of phonon-backend-gstreamer, phonon-backend-vlc, and phonon-backend-xine. I was reading this and got curious. ... (1 Reply)
Discussion started by: cokedude
1 Replies

7. Web Development

problem with exporting vairable from one perl cgi to another perl cgi script while redirecting.

Can anyone tell me how to export a variable from one perl CGI script to another perl cgi script when using a redirect. Upon running the login.pl the user is prompted to enter user name and password. Upon entering the correct credentials (admin/admin) the user is redirected to welcome page. My... (3 Replies)
Discussion started by: Arun_Linux
3 Replies

8. Web Development

perl cgi script not working

Hello, Met a problem learning perl cgi script. 1 #!/usr/bin/perl -wT 2 3 use strict; 4 use CGI qw(:standard); 5 6 my $q = new CGI; 7 8 my $filename = $q->param('/home/yifangt/hello.cgi'); 9 my $contenttype = $q->uploadInfo($filename)->{'Content-Type'}; 10... (5 Replies)
Discussion started by: yifangt
5 Replies

9. Web Development

in cgi perl script a form

hi,i hav a form in cgi perl script.this script accepts a value from user from another html form, and depending upon this value,i need to disable /enable radio buttons in cgi-perl script wen second page is displayed on executing cgi perl script.how do i do it using javascript? (0 Replies)
Discussion started by: raksha.s
0 Replies

10. Shell Programming and Scripting

call shell script from perl cgi script problem

hi,, i have perl scipt with line : system('./try.sh $t $d $m'); in shell scipt try.sh i have the line: echo $1 its not printing value of $t that i hav passed..y is it so..i am running it from apache web server (2 Replies)
Discussion started by: raksha.s
2 Replies
Login or Register to Ask a Question