http://qs321.pair.com?node_id=118615


in reply to forking w/ mod_perl and DBI

There was an excellent article on this very subject in Apache Today titled Improving mod_perl Driven Site's Performance -- Part VI: Forking and Executing Subprocesses from mod_perl.

In the very first paragraph, they point out, using fairly strong language:

It's desirable to avoid forking under mod_perl. Since when you do, you are forking the entire Apache server, lock, stock and barrel. Not only is your Perl code and Perl interpreter being duplicated, but so is mod_ssl, mod_rewrite, mod_log, mod_proxy, mod_speling (it's not a typo!) or whatever modules you have used in your server, all the core routines, etc.

They also point out that forking a process might be trying to do the "wrong thing". In the case that you want to send information to the browser, and then do some processing afterwards (sort of sounds like your case), that there is a cleanup handler. You can do that with something like:
my $r = shift; $r->register_cleanup(\&do_stuff); sub do_cleanup{ #some clean-up code here };
In this case, this Apache process isn't freed up to handle another request, but it also isn't causing you the overhead of another fork.

However, they do say that there are some cases where forking is necessary, and take you through proper steps to do so.

Good luck!
-Eric