Welcome to WebmasterWorld Guest from 54.167.197.218

Forum Moderators: coopster & jatar k & phranque

Message Too Old, No Replies

run perl scripts on background

     
7:08 pm on Sep 6, 2006 (gmt 0)

New User

5+ Year Member

joined:Aug 15, 2006
posts:11
votes: 0


I have a html 'form.html' that will call 'sample.cgi'. After an user submit this form, 'sample.cgi' will be loading. But there is a perl scripts ,'sample.pl', in 'sample.cgi', which takes a while to run, so 'sample.cgi' page will keep on loading until 'sample.pl' stops.

How to let perl scripts, 'sample.pl' run on background? And then that 'sample.cgi' can be loaded quickly.

Thanks!

5:33 am on Sept 7, 2006 (gmt 0)

Senior Member

WebmasterWorld Senior Member rocknbil is a WebmasterWorld Top Contributor of All Time 10+ Year Member

joined:Nov 28, 2004
posts:7999
votes: 0


Google for fork.

if ($pid = fork) { ...parent process ... }
else { ... child process ... }

2:23 pm on Sept 7, 2006 (gmt 0)

New User

5+ Year Member

joined:Aug 15, 2006
posts: 11
votes: 0


Thanks <b>rocknbil</b>!

I found a link about 'fork': [oreilly.com...]

I run that example in Unix, and it works (run child process in background).

But when I run it in Browser, it doesnot work. Browser (firefox) keeps on loading until child process finished, although we can close browser.

6:01 pm on Sept 7, 2006 (gmt 0)

Preferred Member

10+ Year Member

joined:Jan 5, 2006
posts:536
votes: 0


yea, I don't think you can do what you are trying to do. Can you run the other script last instead of first?
6:12 pm on Sept 7, 2006 (gmt 0)

New User

5+ Year Member

joined:Aug 15, 2006
posts:11
votes: 0


What did you mean, Perl-driver?

Form.html: where user fills information.
Sample.cgi: get information from Form.html
Job.pl: use infromation to execute some tasks (but it takes some time)

What I wanted is:
load Sample.cgi and tell user, job is running and email will be sent out when done.

Job.pl will be run on background.

Problem: Sample.cgi keeps on loading until Job.pl finished, although you can forcedly close Sample.cgi.

Solution:?

Many thanks!

8:04 pm on Sept 7, 2006 (gmt 0)

Preferred Member

10+ Year Member

joined:Jan 5, 2006
posts:536
votes: 0


sample.cgi

sample.cgi does some stuff
print "You will recieve an email shortly";
exec(job.pl);

that should do it. When you run a program from the exec() function the current script is replaced by the new one and the old script is exited. job.pl runs and sends an email when finished.