[cgiapp] Re: is my app caching db connection ?

Michael Peters mpeters at plusthree.com
Mon Jul 28 12:58:53 EDT 2008


Mark Stosberg wrote:

>> the different process_id (2461, 2780) means they are two different
>> connections ?
> 
> I think that's right. 
> 
> I'm not a FastCGI user, but it's my understanding that you would need a
> variable to be at least package-scoped for it to be share.
> 
> If I'm right, then something like this would stay shared:
> 
> our $dbh = DBI->connect(...);
> $self->dbh_config($dbh);

But don't do that. It's just asking for problems. DB connections *will* 
go stale. If that happens your application will stop working with 
strange errors and only a restart will fix it. This is the problem that 
Apache::DBI solves for mod_perl. If you want to learn how to do this on 
your own, then I suggest looking in there for some pointers. But I will 
warn you that Apache::DBI doesn't do the magic on it's own. DBI knows 
about Apache::DBI. So any code you write yourself won't have that advantage.

I'd suggest asking on a more FastCGI specific forum to find out how 
others cache their DB handles. BTW, which RDMS are you using? If your 
using MySQL, then I'd say don't worry about it. Creating new MySQL 
connections is really fast and if that's a bottleneck in your 
application, then congratulations. OTOH if you're using Oracle, or even 
Postgres then connections are much more expensive, so you should be 
looking for a caching solution.

-- 
Michael Peters
Plus Three, LP



More information about the cgiapp mailing list