Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Apache CGI and spawning another process

Reply
Thread Tools

Apache CGI and spawning another process

 
 
Francis Hwang
Guest
Posts: n/a
 
      05-07-2005
Hey all,

There's probably a very easy answer to my question, but I've never been
very good with managing process and haven't been able to find this
addressed directly in the archives. So: I'm trying to have a CGI script
that will publish a ton of different XML files. The publishing process
is pretty long, maybe it will run 10 or 15 minutes, but it's not
complicated, and the user doesn't need any feedback, they just need a
message that says "we started the process; it should be done in a few
minutes."

I tried running code that looks like this:

is_parent = fork
system '/some/external/script.rb' unless is_parent
print "Location: /admin_page\n"

And this works on the command-line. It prints the location line right
away and then ends quickly, leaving the external script to run in the
background until it finishes of its own accord.

But the same script doesn't work in Apache ... it runs the external
script, but hangs and doesn't exit. I guess Apache is treating the
spawning of external processes differently. Anybody have experience
with this? Is there some really obvious solution I'm missing?

tia,
Francis Hwang
http://fhwang.net/



 
Reply With Quote
 
 
 
 
James Britt
Guest
Posts: n/a
 
      05-07-2005
Francis Hwang wrote:
> Hey all,
>

..

>
> But the same script doesn't work in Apache ... it runs the external
> script, but hangs and doesn't exit. I guess Apache is treating the
> spawning of external processes differently. Anybody have experience with
> this? Is there some really obvious solution I'm missing?


Hack, off the top of my head, untested (but I may yet go try it)
Write a task to crontab and set the time a few seconds from now.

Or: Just have a cron job that pulls tasks off a file-based queue.

Plus the usual caveats about duplication, notification, hung tasks, and
so on.

James



 
Reply With Quote
 
 
 
 
Joost Diepenmaat
Guest
Posts: n/a
 
      05-09-2005
On Sun, May 08, 2005 at 07:44:51AM +0900, Francis Hwang wrote:
> Hey all,
>
> There's probably a very easy answer to my question, but I've never been
> very good with managing process and haven't been able to find this
> addressed directly in the archives. So: I'm trying to have a CGI script
> that will publish a ton of different XML files. The publishing process
> is pretty long, maybe it will run 10 or 15 minutes, but it's not
> complicated, and the user doesn't need any feedback, they just need a
> message that says "we started the process; it should be done in a few
> minutes."
>
> I tried running code that looks like this:
>
> is_parent = fork
> system '/some/external/script.rb' unless is_parent
> print "Location: /admin_page\n"
>
> And this works on the command-line. It prints the location line right
> away and then ends quickly, leaving the external script to run in the
> background until it finishes of its own accord.
>
> But the same script doesn't work in Apache ... it runs the external
> script, but hangs and doesn't exit. I guess Apache is treating the
> spawning of external processes differently. Anybody have experience
> with this? Is there some really obvious solution I'm missing?
>


You should probably close the $stdout (and possibly $stdin and $stderr)
streams in the child process, otherwise apache will think there is still
more output coming.

cheers,
Joost Diepenmaat.



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Spawning a process with ASP.NET 2.0 beta 2 Marianne ASP .Net 4 07-07-2005 11:09 AM
CGI script: release browser after spawning new process Prachi Perl Misc 7 05-18-2005 10:59 PM
Error Spawning Process from ASP.NET hoochiegooch@hotmail.com ASP .Net 4 02-08-2005 04:37 PM
Spawning, and Killing, a Process brolewis Python 0 01-31-2005 09:35 PM
Python CGI - Accepting Input, Invoking Another Process, Ending CGI LarsenMTL Python 4 11-04-2004 05:59 PM



Advertisments