[Dancer-users] Using persistent DB connections in Dancer::Tutorial
Puneet Kishor
punk.kish at gmail.com
Sat Jan 8 19:34:37 CET 2011
On Saturday, January 8, 2011 at 12:31 PM, Gurunandan Bhat wrote:
>
>
> On Sat, Jan 8, 2011 at 8:26 PM, Puneet Kishor <punk.kish at gmail.com> wrote:
>
> >
> >
> > Gurunandan Bhat wrote:
> >
> > > If I rewrite connect_db as:
> > >
> > > my $dbh;
> > > sub connect_db {
> > >
> > > if (! defined $dbh) {
> > > $dbh = DBI->connect("dbi:SQLite:dbname=".setting('database')) or
> > > die $DBI::errstr;
> > >
> > > }
> > > return $dbh;
> > > }
> > >
> > > will the application use a single connection for all connections under
> > > all perl webservers (in-built, mod_perl, Starman, Twiggy etc.).
> > >
> > >
> >
> >
> >
> > I am interested in a definitive and clear answer as well. I tried the above method a while back, and kept on getting errors on transactions (I am using SQLite).
> >
> >
> >
>
> Admittedly, this (using a common database handle for all connections) might not neccesarily be a Good Thing precisely because of transaction issues (and consequently slowdowns because of locks) that it leads to.
>
> However one way to handle transaction issues could be to have a per-session database handle. Requestor passes a session id to connect_db, which sees if the session has been allocated a handle and generates a new handle if not. If the session is an old one, it merely picks up the correct previously allocated handle and returns it. If per-session persistence is possible, then you should not have transaction issues.
>
> Is that possible?
>
>
>
>
>
>
heh heh! I have no idea, although, the logic that you describe seems very, well, logical. Should work. I just don't know how to do it.
If someone who is first-hand experienced in this, and especially with different web servers, would do a little write-up, that would be tremendous.
--
Puneet Kishor
Sent with Sparrow
>
>
> > Since I am using Apache, I added `PerlModule Apache::DBI` to my httpd.conf, and went back to a simple $dbh creation instead of checking for `defined $dbh`
> >
> > Knowing the correct way to implement this, perhaps even the way*s* for different servers (I am assuming different web servers might have different ways of implementing persistent connections) would be tremendously helpful.
> >
> >
> > > If that is true, a line to that effect in an appropriate place in the
> > > tutorial would emphasize the persistent features of the solution.
> > >
> > > Also, are any hooks run when the application instance is destroyed? If
> > > there are, implementing a graceful closing of open DB connection(s)
> > > might provide a valuable lesson in the Tutorial.
> > >
> > > Thank you.
> > >
> > >
> > >
> > >
> >
> >
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.backup-manager.org/pipermail/dancer-users/attachments/20110108/5d2df7f7/attachment-0001.htm>
More information about the Dancer-users
mailing list