4

我有一个长期运行的工作,使用Propel2. mysql server has gone away但是,有时它会因臭名昭著的错误而崩溃。我想通过重新连接到服务器来从这个错误中恢复,也许在等待几秒钟之后。有谁知道如何在连接丢失后强制 Propel 重新连接?我没有从PropelPDO API 中找到任何线索。

4

1 回答 1

3

与 laravel 队列结合使用时,我遇到了这个问题。queue:work 守护进程是进程,发生超时后,它不会自行重新连接。也尝试了持久连接,但没有帮助。

我现在解决这个问题的方式是特定于队列/laravel,但也可以帮助您找到解决方案。

我现在强制由工作人员处理的每个作业,通过使用 Queue::before() 事件断开推进连接。

$manager = Propel::getConnectionManager('default');
$manager->closeConnections();

Propel 完成的新请求将创建一个新的连接(虽然这将发生在工作人员处理的每个新作业上)

您也许可以尝试/捕获您的查询,查看错误/异常是什么,当它是“mysql 服务器已消失”时触发断开连接并重试查询

于 2016-09-29T09:57:49.173 回答