swoole 数据库长连接的 重连问题(mysql经常断开),导致过段时间查不出数据
最近用swoole服务,碰到了一个非常奇怪的问题(本人用了一套自己封装的mysql操作类,刚启动,数据库操作一切正常,但是每次过了一个晚上再运行的时候老是出现数据库查不出的情况),刚开始怀疑是不是自己封装的类有问题,单经过排查并不是,经过查阅资料,原来是因为mysql服务有一个设置参数(wait_timeout),这个参数默认值是八个小时,连接超过八个小时以后,mysql会自动关闭连接服务。短连接不会出现此类问题,长连接则会。
下面则可以优化出现的问题:
1.linux下打开/etc/my.cnf,在属性组mysqld下面添加参数如下:
[mysqld]
interactive_timeout=28800
wait_timeout=28800
windows下打开my.ini,增加:
interactive_timeout=28800
wait_timeout=28800
2.不需要改变上面的配置参数,在mysql操作类中优化添加一下代码
判断mysqli_query();的返回值是否是false,如果是false的话,则再重新连接一下就可以啦