I wish I could do SQL before the fork, but I need to update tables with results in the forks.

Just to make things stranger, after I make a fork and things don't happen the way I expect them, subsequent calls to other programs running under mod_perl are generating Segmentation Faults. This could be due to the fact that the server is running in Europe and the SQL server in North America. I would really love to hear that this can cause segmentation faults because otherwise I have no idea where they are coming from and in all my years using this same framework in mp1, mp2 or just vanilla CGI I have never seen so many segfaults.

Bah...

Tosh


macke...@animalhead.com wrote:
Have you been through these threads already?
The first one seems quite like what you're doing.

http://mail-archives.apache.org/mod_mbox/perl-modperl/200908.mbox/%3c59a07310908250820m1f789901g22eece5b2897c...@mail.gmail.com%3e
http://www.gossamer-threads.com/lists/modperl/modperl/100099

Is the time for the SQL inquiry so bad that you can't
just do the inquiry before the fork-and-exec bit?

Best of Luck,
cmac


On Jan 25, 2010, at 8:07 AM, Tosh Cooey wrote:

My application-from-hell is doing odd things probably related to the above storms and culminating in a perfect storm.

Can anyone point me to resources outlining the best way to use the combination in the subject line?

There seems to be many ways of accomplishing specifics but very little generic methodologies which can be adapted.

What I'm trying to do is in a nutshell:

##########
my $object_with_DBH = new My::DataObject;

... do stuff...

if ($pid = fork) {
    ... parent things ...
} elsif (defined $pid) {
  ... close STDhandles ...

  my $data = $object_with_DBH->SQL('do SQL stuff with old connection');

  exec 'things from $data';

  CORE::exit(0);
}
##########

I've tried Stas' code but that's for MP1, and with $DBI->clone(), and playing with "setsid" from POSIX and on... There seems to be no love between mod_perl2, fork, and DBI.

On a side, but possibly related note, my browser is sending a POST request which results in the FORK above and the parent then sends a 302 redirect with some status variables. This works fine, except between the POST and the 302 GET is another POST to the same URI which results in a 500 error, here's the log:

"POST /tosh/mailfile.pl HTTP/1.1" 302 282

"POST /tosh/mailfile.pl HTTP/1.1" 500 424

"GET /tosh/index.pl?message=Notice%20sent HTTP/1.1" 200 4309

The browser only seems to see the middle one, the 500. I'm certain this is related to my poor forking above but I have no idea why. Are there any tools for Firefox that will let me track every connection it's making and why?

Thanks again for any help with my Frankenstein monster...

Tosh

--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/



--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/

Reply via email to