think-queue报错:PDO::prepare(): send of 62 bytes failed with errno=10053

PHP / 作者:HMiJn / 683人浏览

最近突然发现服务器硬盘容量不断剧增,想着肯定哪里有问题,查看了下日志

几乎1分钟左右一个日志文件,我设置的日志大小是4M的。看了下日志内容发现报错

[10501]SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

找到日志出错的最开始一条记录:

PDO::prepare(): send of 62 bytes failed with errno=10053

看了下,原来是mysql长时间连接,被断开了,而且没有自动重连,然后去设置下mysql的配置:

    // 是否需要断线重连 添加断线重连mysql
    'break_reconnect' => true,


添加了mysql如果断线重连以后,每次当mysql断线的时候就会自动重新连接。

但是

[10501]SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

报错依然会存在,不过没关系,不影响程序运行的,这个报错也可以监听一下每次断开的日志。

后记:

如果TP6.0版本以上,可以自定义特殊的,TP框架未定义的断线错误

    // 断线标识字符串
    'break_match_str' => ['2006','error with'],


在一些特殊的情况下或者某些数据库驱动的断线标识错误还没有定义,支持配置。

小坑:

配置了断线重连,但是还是收到了邮件监控警报,然后发现,原来没生效,看了下,是debug=false,应该是配置文件有缓存,重新加载配置文件的缓存就行了