From: Joost Diepenmaat Date: 2005-05-09T18:17:21+09:00 Subject: Re: Apache CGI and spawning another process 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.