469,925 Members | 1,507 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,925 developers. It's quick & easy.

Strange behaviour with perl and apache

Hi

I have some troubles with a long system() sub-process (from 30 sec to
30 min) called from a CGI.

My web page have to wait the end of the system() call before finishing
it's loadding but this is not whats appen. The web page is waiting for
a couple of minutes but continue and finish it's loadding before the
end of program called by the system() call

Here a part of my "pseudo" code :

^- other code (html stuff)...

if (!is_lock($file_name, $file_date)){
lock($file_name, $file_date)
system "path_to_long_execution_prog $file_name $file_date";
my $exit_value = wait();
unlock($file_name, $file_date)
} else {
log("Error :: Trying to redo the system call ?!?");
}

and yes, I got "Error :: Trying to redo the system call ?!?" in my log
and is not suppose to... and I don't know why !

I run on a AIX server whith apache 1.3.27 and perl 5.005_02

Dave
Jul 19 '05 #1
1 2233
In article <7c*************************@posting.google.com> , David
Cantin <da******@ca.ibm.com> wrote:
Hi

I have some troubles with a long system() sub-process (from 30 sec to
30 min) called from a CGI.

My web page have to wait the end of the system() call before finishing
it's loadding but this is not whats appen. The web page is waiting for
a couple of minutes but continue and finish it's loadding before the
end of program called by the system() call
You don't need to do a wait() after a call to system(). The system()
call does a fork, an exec, and a wait in the parent process to wait for
the child process before returning to your main program. You should
also check the return from system() to see if an error occurred (see
below).
Here a part of my "pseudo" code :
It is better to post real code. Write a short perl program that calls
the same program and see what happens when you execute the perl program
from the command line (you may have to supply some things normally
supplied by your web server). Then post the program and the results if
you still get an error you can't diagnose.

^- other code (html stuff)...

if (!is_lock($file_name, $file_date)){
lock($file_name, $file_date)
system "path_to_long_execution_prog $file_name $file_date";
Replace above line with:

system "path..." == 0 or die "system failed: $?";
my $exit_value = wait(); Delete the above line.
unlock($file_name, $file_date)
} else {
log("Error :: Trying to redo the system call ?!?");
}

and yes, I got "Error :: Trying to redo the system call ?!?" in my log
and is not suppose to... and I don't know why !

I run on a AIX server whith apache 1.3.27 and perl 5.005_02

Dave


FYI: this newsgroup is defunct. Try comp.lang.perl.misc in the future
for better responses.
Jul 19 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Keith | last post: by
4 posts views Thread by Torsten Reiners | last post: by
6 posts views Thread by Michael L. Artz | last post: by
12 posts views Thread by rurpy | last post: by
7 posts views Thread by Tim Evers | last post: by
1 post views Thread by graphman | last post: by
31 posts views Thread by happyse27 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.