出现mysql has gone away

ynwaspectre

尝试开启了tp的break_reconnect 没用,我是在onMessage里使用tp的orm进行操作的 ,
另外我在onWorkStart里加了心跳包10秒一次 但是发现 非定时器部分的代码也在10秒一次

阅读 139
1个回答

walkor

onWorkerStart 里加一个定时器,从数据库定时select 1,保持连接。
类似

Timer::add(55, function () {
    Db::connect('mysql')->query('select 1');
});

非定时器部分的代码也在10秒一次

应该是你哪里业务逻辑写的有问题,需要自己排查。可以利用 echo new \Excpetion(''); 打印调用栈看下哪里在定时调用非定时器部分代码

  • ynwaspectre 5天前

    非定时器部分代码 也10秒一次 就是图里那个logo日志 触发那个 写在那边按道理不会呀。。

  • ynwaspectre 5天前

    试了下我把定时器代码 去掉 在onWorkerStart 里单独就一行代码 不会定时打印了

  • ynwaspectre 5天前

    排查了下我这边的问题 定时器里应该有一个报错 估计导致不停的在重启进程