我有一个长期运行的工作,使用Propel2
. mysql server has gone away
但是,有时它会因臭名昭著的错误而崩溃。我想通过重新连接到服务器来从这个错误中恢复,也许在等待几秒钟之后。有谁知道如何在连接丢失后强制 Propel 重新连接?我没有从Propel或PDO API 中找到任何线索。
问问题
670 次
1 回答
3
与 laravel 队列结合使用时,我遇到了这个问题。queue:work 守护进程是进程,发生超时后,它不会自行重新连接。也尝试了持久连接,但没有帮助。
我现在解决这个问题的方式是特定于队列/laravel,但也可以帮助您找到解决方案。
我现在强制由工作人员处理的每个作业,通过使用 Queue::before() 事件断开推进连接。
$manager = Propel::getConnectionManager('default');
$manager->closeConnections();
Propel 完成的新请求将创建一个新的连接(虽然这将发生在工作人员处理的每个新作业上)
您也许可以尝试/捕获您的查询,查看错误/异常是什么,当它是“mysql 服务器已消失”时触发断开连接并重试查询
于 2016-09-29T09:57:49.173 回答