Yii2 学习内容整理

php yii2 出现mysql-gone-away-2006解决

PHPer 2018-01-16 2854 0 0

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...

    推荐内容

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    BT磁力搜索网站汇总和找不到的资源

    什么是磁力链接,您如何使用?

    Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作

    【车险课堂】什么是无赔款优待系数ncd,你“造”吗?