我开发了一个应用程序,可以批量发送大量电子邮件给不同的用户。我在这个应用程序中遇到的最常见问题是mysql连接超时问题。在批次之间,当先前打开的连接中没有执行查询并且连接长时间保持空闲时,mysql本身会关闭连接。当我再次尝试执行任何sql查询发送当前批处理后,它给了我mysql连接错误。
现在我正在使用mysql_ping($ conn)函数来检查连接id是否为timedout。如果连接超时,我再次使用mysql_connect()函数连接。现在我转向学说而不是本机PHP函数。在Doctorine中是否还有一个recconnect()函数?
答案 0 :(得分:0)
我的批处理操作从未遇到过这个问题,但我认为您可能会在代码中的某些位置执行此类操作,您认为连接会有超时的风险:
// 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
答案 1 :(得分:0)
有一个自定义捆绑包,允许重新打开连接: https://github.com/facile-it/doctrine-mysql-come-back
您可以设置最大重试次数,也可以在Connection上手动调用方法重试!