在处理持久性MySQL连接时,一个问题是它们在某个超时(通常为28800秒)后被丢弃。
DBIx::Connector似乎完成了自动重新连接到断开连接的工作,但是它向每个SQL语句添加了更多的Perl代码,这可能会很烦人。例如,代替:
$dbh->do('DROP DATABASE stackoverflow');
必须说:
$conn->run(
fixup => sub {
my $dbh = shift;
$dbh->do('DROP DATABASE stackoverflow');
}
);
假设不需要交易。为什么要使用DBIx::Connector而不是传递$ dbh-> {mysql_auto_reconnect} = 1,这也很好用?
最佳答案
但是,如果DBIx::Connector在其 ping 或 fixup Connection Modes中运行时,如果连接断开,它也会重新连接。请注意,默认值为 no_ping 模式,该模式显然不会尝试重新连接。
所有人都说...如果您使用的是MySQL,并且不关心DBIx::Connector的其他优点(例如,因为您从不 fork 或使用线程),那么
mysql_auto_reconnect
可能对您来说是完美的。关于mysql - 与仅将mysql_auto_reconnect设置为1相比,使用DBIx::Connector有什么优势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8353359/