On Tue, 11 Feb 2014 00:29:24 +0100
Anthony Milan <[email protected]> wrote:

> Le 10/02/2014 23:29, Scott Penrose a écrit :
> > Without any actual internal knowledge, my one guess would be
> > forking.
> 
> Yes.
> 
> > If you make a database connection into a variable (e.g. database,
> > or $dbh) then you fork, then you can no longer access that
> > connection.
[...]
> > Now it should all be handled, but maybe it isn’t?
> 
> Ok. I changed from:
> 
> use Dancer::Plugin::Database;
> my $dbh = database('db1');
> 
> to
> 
> get '/something/:id' => sub {
> my $dbh = database('db1');
> 
> }

Bingo.

Dancer::Plugin::Database caches the handles it gives you, so you can
call database() repeatedly and get the same handle back, but takes care
that the handles it will give you from the cache are the ones for the
current process ID / thread - so if you've forked, it won't
accidentally give you one from the parent.  If you've got one before a
fork and hung on to it yourself, though, it can't help you there :)



-- 
David Precious ("bigpresh") <[email protected]>
http://www.preshweb.co.uk/     www.preshweb.co.uk/twitter
www.preshweb.co.uk/linkedin    www.preshweb.co.uk/facebook
www.preshweb.co.uk/cpan        www.preshweb.co.uk/github


_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users

Reply via email to