[Dancer-users] app does not reconnect to database after a while
WK
wanradt at gmail.com
Mon Jun 11 13:50:06 CEST 2012
Tere!
I have a little intranet app (in development environment with Dancer's
webserver), which fails to connect to database, when it is unused some
hours. When on morning first user tries to get some page, he gets
"before filter error":
runtime error
An error occured while executing the filter named before:
DBD::mysql::db selectrow_array failed: MySQL server has gone away at
/usr/local/lib/site_perl/My/Settings.pm line 136.
Pointed line contains a query, which executes fine, when database
connection is available (read: after restarting app).
My app's main module logic is like this:
package My;
use 5.010;
use Dancer ':syntax';
use Dancer::Plugin::Database;
use Dancer::Plugin::EscapeHTML;
use utf8::all;
use My::Settings;
use My::Tools;
our ($my_settings, $dbh) = ();
$dbh ||= database;
$my_settings = get_settings('prod');
my $my_tools = My::Tools->new (
dbh => database,
settings => $my_settings,
);
hook 'before' => sub {
$my_settings = get_settings('prod');
};
sub get_settings {
my $env = shift;
my $my_settings = My::Settings->new (
dbh => $dbh,
env => $env,
);
return $my_settings->{settings};
}
In before hook i ask dynamic settings from database. Is there better
way to do this. Or other solutions?
TIA!
--
Wbr,
Kõike hääd,
Gunnar
More information about the Dancer-users
mailing list