作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个长时间运行的作业,使用 Propel2
构建。但是,有时它会因臭名昭著的 mysql server has gone away
错误而崩溃。我想通过重新连接到服务器来从这个错误中恢复过来,也许等几秒钟之后。有谁知道如何在连接丢失后强制 Propel 重新连接?我没有从 Propel 中找到如何执行此操作的任何线索。或 PDO API。
最佳答案
我在结合 laravel 队列时遇到了这个问题。 queue:work守护进程是进程,超时后不会自行重连。也尝试了持久连接,但没有帮助。
我现在解决这个问题的方法有点特定于队列/laravel,但也可能会帮助您找到解决方案。
我现在强制每个由工作人员处理的工作,通过使用 Queue::before() 事件断开推进连接。
$manager = Propel::getConnectionManager('default');
$manager->closeConnections();
然后 Propel 完成的新请求将创建一个新连接(尽管 worker 处理的每个新作业都会发生这种情况)
你也许可以尝试/捕获你的查询,看看错误/异常是什么,当它是“mysql server has gone away”时触发断开连接并重试查询
关于php - 当 MySQL 服务器消失时 Propel2 重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048775/
我是一名优秀的程序员,十分优秀!