perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Vanasco <...@2xlp.com>
Subject Re: Using Apache::DBI
Date Wed, 10 May 2006 17:34:52 GMT

On May 10, 2006, at 1:26 PM, Jay Buffington wrote:

> I want my modules to be able to get a the same database handle
> anywhere they need it during a single request (if under mod_perl) or
> the life time of the script they're in.
>
> At first I was caching the database handle myself when running outside
> of mod_perl.  In mod_perl I was relying on Apache::DBI returning the
> same handle every time I called connect().  That didn't work.
>
> Then I read a section in Appendix A of "Practical mod_perl" that gave
> me what I wanted: http://modperlbook.org/html/appa_12.html
>
> But doesn't that solution have this problem:  It will return a dead
> database handle when the connection times out before the Child is
> reaped.  In fact, that's just the problem that Apache::DBI solved by
> adding the ping() method.
>
> I considered allocating a handle in the pnotes() at the beginning of
> every request using a PerlInitHandler, but that is expensive,
> especially since many requests don't even use a handle.
>
> Jay

I use an abstraction layer

	MyApp::DB

i call it to grab a DB handle, and it does magic stuff internally to  
either give me a handle or die if it shouldn't - and it uses  
Apache::DBI to handle the connecting

typer macdonald wrote this:
	http://search.cpan.org/~crakrjack/DBIx-Transaction-0.008/lib/DBIx/ 
Transaction/db.pm

It does essentially the same thing, but nicer and without some of the  
crazy stuff i have in my version ( mine turns subsequent connects  
during an apache request into a nested transactions, which is scary  
and dangerous yet fun )

I'd suggest using that.  Just wrap it in its own package ( like a  
poor mans singleton or factory ) and call that package to give you a  
DB handle as needed.





| - - - - - - - - - - - - - - - - - - - -
| RoadSound.com / Indie-Rock.net
| Collaborative Online Management And Syndication Tools
| - - - - - - - - - - - - - - - - - - - -





Mime
View raw message