我已经开发了一个应用程序,可以批量发送大量的电子邮件给不同的用户。我在这个应用程序中遇到的最常见的问题是mysql连接超时问题。在批处理之间,当之前打开的连接中没有执行任何查询,并且连接长时间处于空闲状态时,mysql本身会关闭该连接。在发送当前批处理之后,当我再次尝试执行任何sql查询时,它会给出mysql连接错误。
现在我正在使用mysql_ping($conn)函数来检查连接id是否超时。如果连接超时,我将使用mysql_connect()函数再次连接。现在,我将转向理论,而不是原生PHP函数。Doctorine中是否也有recconnect()函数?
发布于 2010-11-09 05:12:12
我的批处理操作从来没有遇到过这个问题,但我认为你可以在代码中那些你认为连接会超时的地方做一些类似的事情:
// Fetch current connection
$conn = Doctrine_Manager::connection();
if(!$conn) {
// Open a new connection
$conn = Doctrine_Manager::connection('mysql://username:password@localhost/whatever', 'connection 1');
}http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/connections.html
发布于 2018-11-12 21:51:32
有一个允许重新打开连接的自定义包:https://github.com/facile-it/doctrine-mysql-come-back
您可以设置最大重试次数,也可以在连接时手动调用方法重试!
https://stackoverflow.com/questions/4117606
复制相似问题