有时我需要刷新"帮助"功能
一个例子: 如果数据库连接函数在辅助函数中,并且数据库访问权限发生了变化,并且我将此访问数据存储在sqlite数据库中,并且我覆盖了这些数据(在sqlite数据库中),我该如何在这种情况下刷新帮助器功能
答案 0 :(得分:2)
我认为每次连接或重用主数据库的句柄时,都需要查询sqlite数据库中的更改。如果您注意到sqlite发生了更改,则需要断开与主服务器的连接,提取新凭据并使用新凭据重新连接到主服务器。
$app->helper(
db => sub {
my $self = shift;
my $credentials_changed = your_function_to_check_this(...);
if($credentials_changed){
$dbh->disconnect if $dbh;
return db_connect(
$credentials->{db_host}, $credentials->{db_user},
$credentials->{db_database}, $credentials->{db_pass}
);
}
);
sub db_connect {
my ($db_host, $db_user, $db_database, $db_pass) = @_;
my $dbh = 0;
$dbh = DBI->connect("DBI:mysql:database=$db_database;host=$db_host", "$db_user", "$db_pass", {'RaiseError' => 1});
$dbh->{mysql_auto_reconnect} = 1;
return $dbh;
}