最近做了一个多人竞拍的小功能 因为以前没做过 所以踩了很多坑
用的是 mysql + php + redis 实现的竞拍功能
这里先说一下踩得第一个坑
用PHP捕获异常发现 MySQL has gone away
由于本人很菜 当时就懵逼了
和公司的其他脚本写的一样啊 怎么就我这里出问题了呢
后来查了很多资料 (因为问题描述不清,得到了很多答案 大多数都是ctrl+c ctrl+v)
最后还是在领导的帮助下 知道了问题的所在 mysql wait_timeout (还是过来人有经验)
自己在空闲的时候整理了下资料 当然 也是 ctrl+c ctrl+v 但这是我自己改的 仅供自己记录下成长历程吧
Mysql服务器默认的“wait_timeout”是8小时【也就是默认的值默认是28800秒】,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,
通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。但是,脚本会认为他是连接的,当脚本再次操作mysql的时候,mysql实际已经断开连接了,所以会抛出MySQL has gone away的异常
通过查询日志发现 脚本在八个小时内 并没有对mysql 进行操作 也验证了这个问题
解决办法就是修改wait_timeout 的值 具体方法 就自己百度吧
wait_timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天
其实心里还是不服气的 既然人这么少 为什么还要弄竞拍呢 哈哈
用的是 mysql + php + redis 实现的竞拍功能
这里先说一下踩得第一个坑
用PHP捕获异常发现 MySQL has gone away
由于本人很菜 当时就懵逼了
和公司的其他脚本写的一样啊 怎么就我这里出问题了呢
后来查了很多资料 (因为问题描述不清,得到了很多答案 大多数都是ctrl+c ctrl+v)
最后还是在领导的帮助下 知道了问题的所在 mysql wait_timeout (还是过来人有经验)
自己在空闲的时候整理了下资料 当然 也是 ctrl+c ctrl+v 但这是我自己改的 仅供自己记录下成长历程吧
Mysql服务器默认的“wait_timeout”是8小时【也就是默认的值默认是28800秒】,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,
通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。但是,脚本会认为他是连接的,当脚本再次操作mysql的时候,mysql实际已经断开连接了,所以会抛出MySQL has gone away的异常
通过查询日志发现 脚本在八个小时内 并没有对mysql 进行操作 也验证了这个问题
解决办法就是修改wait_timeout 的值 具体方法 就自己百度吧
wait_timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天
其实心里还是不服气的 既然人这么少 为什么还要弄竞拍呢 哈哈