|-原 php yii2 出现mysql-gone-away-2006解决
20220415 已发在知乎 https://zhuanlan.zhihu.com/p/499379606
mysql gone away 简单的说就是连接不见了,那为啥不见了?
这个我会在最后说。
以下是网上的文章,觉得有些旁敲侧击了。
http://blog.csdn.net/u012260707/article/details/78223008
问题描述:
Error Info: Array ( [0] => HY000 [1] => 2006 [2] => MySQL server has gone away )
"用php跑数据 任务时间过长,每次都会出现这个,能帮忙把这个超时时间设置到最大吗,下周我们仔细看看这个是啥问题,之前用JDBC跑数 不会出现这个问题,应该是php,yii2一直拿connection没有释放"
JDBC中!=null 就close 这种事我觉得应该是框架做的
上述可知用JDBC无此问题,用yii2频繁出现,定位是yii2的问题,gone-away意思是连接不见了,断掉了,那么有没有colse和open的方法呢,断掉了我们手动去open一下
查了一下open和close的写法为
Yii::$app->db->open(); Yii::$app->db->close();
思路是在
try{ //code }catch(Exception $e){ //去判断 $e是不是2006,然后去open一下,然后再colse一下 }
每个方法都去写一个这样的try{}catch{}不是很科学,通常的做法是在顶级父类的afterAction或入口去拦截这样的错误 最终选取的做法,重载yii\db\Command的execute和queryInternal方法 阅读yii\db\Command源码可知 execute()--->所有的增删改操作的入口 queryInternal()---->所以的查询操作的入口 最终书写一个Command去继承yii\db\Command,然后在数据库db配置中把默认的command Class 改成我们自己写的子类commandscm
修改示例 ...
浏览更多内容请先登录。
立即注册
更新于:2022-05-29 10:27:30
相关内容
域名解析
打不开Godaddy.com网站和域名无法解析的解决方法
GoDaddy DNS问题导致域名解析不正常的解决办法
godaddy 无法登录 Your browser is a bit unusual... Please try the foll...
推荐内容