这里详细描述问题,我加了try catch 后,这里会错误,是不是因为数据库断开了还调用回调函数:setHeartbeatChecker呢,是官方这个组件该加try catch 呢,还是底层内部在数据库断开后,不应再调用这个回调呢?
使用的是最新版本workerman5.1,webman2.1
心跳检测是定时给数据库发一个select 1请求,如果没异常则代表连接没断开。如果有异常例如 Mysql server gone away,连接池会检测到这个异常并输出异常日志,然后销毁这个连接对象,下次请求就不会再使用这个mysql连接了。 所以不要在心跳里加try catch,那样会导致连接池无法检测到异常,这个异常连接会一直存在。
好的,谢谢
心跳检测是定时给数据库发一个select 1请求,如果没异常则代表连接没断开。如果有异常例如 Mysql server gone away,连接池会检测到这个异常并输出异常日志,然后销毁这个连接对象,下次请求就不会再使用这个mysql连接了。
所以不要在心跳里加try catch,那样会导致连接池无法检测到异常,这个异常连接会一直存在。
好的,谢谢