在workerman基础上开发了客服系统遇到特殊问题

chosen1cwp

在workerman基础上开发了客服系统遇到特殊问题:每一天上午总会有错误,说uid有错,等重启动workerman服务之后,就一切正常了,不知道是何原因。请群主解答一下。

3787 1 0
1个回答

walkor

你uid是通过mysql得到的吧
可能你的mysql用了单例模式或者全局mysql实例,即创建一个链接后,后续请求全部复用了这个实例,也就是说复用了这个mysql链接。

这种复用mysql链接的情况需要注意的是:当这个链接一直是空闲的(没有数据传输),mysql服务端会单方面断开链接,但是php的mysql实例还是存在的,这时再使用这个实例就会报错(错误码2006,有个类似mysql gone away的错误)。

解决方法:
1、判断错误码,如果是2006就重新创建个mysql实例
2、不使用全局mysql实例,每次使用数据库时重新创建一个实例
3、将mysql服务端的wait_timeout值,设置为365天(不建议,mysql重启或者网络有问题链接同样会断开)

可以将开发环境 mysql的wait_timeout参数调低,然后进行验证调试

  • 暂无评论
年代过于久远,无法发表回答
🔝