我有一个使用Propel2构建的长时间运行的作业。但是,有时它会崩溃,并出现臭名昭著的mysql server has gone away错误。我想通过重新连接到服务器来从这个错误中恢复,也许在等待几秒钟之后。有没有人知道如何在连接中断后强制Propel重新连接?我没有从Propel或PDO应用程序接口中找到任何如何做到这一点的线索。
发布于 2016-09-29 17:57:49
在与laravel queue结合使用时,我遇到了这个问题。queue:work守护进程正在处理,在超时后,它不会自行重新连接。也尝试了持久连接,但没有任何帮助。
我现在解决这个问题的方法,有点特定于队列/队列,但也可能帮助您找到解决方案。
现在,我通过使用Queue::before()事件强制由worker处理的每个作业断开propel连接。
$manager = Propel::getConnectionManager('default');
$manager->closeConnections();Propel完成的新请求将创建一个新连接(这将发生在worker处理的每个新作业中)
您也许可以尝试/捕获您的查询,查看错误/异常是什么,并在出现'mysql服务器已离开‘时触发断开连接并重试查询
https://stackoverflow.com/questions/36048775
复制相似问题