I haven't been following this thread too closely, but is there a reason you aren't using PerlHandlers instead of ModPerl::Registry? MP::R is meant mostly for CGI migration, so it is probably not widely tested with Apache2::SubProcess calls. I'd suggest trying your external call under a PerlHandler instead and see if that works.
On Fri, Feb 19, 2010 at 1:52 PM, Tosh Cooey <t...@1200group.com> wrote: > Seriously, you know what, the code below doesn't even work. > > And if I get rid of the redirect and replace it with some nice pretty text: > > print "Content-type: text/html\n\nTesting"; > > You know what? The warning for 1 (from the 'for' loop) is printed and then > it all stops, probably as the browser connection "closes". > > Hiding it behind more forks made it work once but then never again. > > So it is my belief that Apache2::SubProcess sucks dirty things, and that > belief won't change until I see proof to the contrary. > > On a related note, anyone have tips for avoiding zombies in CGI forking? > > Tosh > > > > Tosh Cooey wrote: >> >> Hi after much trial and all error I am seeing that the browser connection >> closing is also stopping my subprocess. >> >> The main ModPerl::Registry program looks like this: >> ### file.pl ### >> use Apache2::SubProcess (); >> use JSON(); >> >> &main(shift); >> >> sub main { >> my $r = shift; >> ... >> $r->spawn_proc_prog ('/web/html/file_fork.pl', \...@argv); >> return print $cgi->redirect('index.pl'); >> } >> ### >> >> And >> >> ### file_fork.pl ### >> use JSON(); >> use warnings; >> use POSIX 'setsid'; >> chdir '/' or die "Can't chdir to /: $!"; >> open STDIN, '/dev/null' or die "Can't read /dev/null: $!"; >> open STDOUT, '+>>', '/tmp/debug.txt' or die "Can't write to >> /tmp/debug.txt: $!"; >> open STDERR, '>&STDOUT' or die "Can't dup stdout: $!"; >> setsid or die "Can't start a new session: $!"; >> >> # run your code here or call exec to another program >> foreach my $num (1..10) { >> warn $num; >> sleep(1); >> } >> ### >> >> When file.pl is executed it calls file_fork.pl and file_fork starts to >> print 1, 2, 3 and then stops around 2 or 3 depending on how long my browser >> is connected. >> >> Are there any glaring errors that anyone sees? It should work shouldn't >> it, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 after 10 seconds... >> >> Thank-you all! >> >> Tosh >> >> > > -- > McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/ >