Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Perl (http://www.velocityreviews.com/forums/f17-perl.html)
-   -   Strange behaviour with perl and apache (http://www.velocityreviews.com/forums/t24552-strange-behaviour-with-perl-and-apache.html)

David Cantin 11-03-2003 09:44 PM

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

Jim Gibson 11-03-2003 11:56 PM

Re: Strange behaviour with perl and apache
 
In article <7c5bbc71.0311031344.f7b63c3@posting.google.com> , David
Cantin <dacantin@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.


All times are GMT. The time now is 02:15 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57