thinkphp5,报错too many connections,怎么办?
发布于 作者:苏南大叔 来源:程序如此灵动~

苏南大叔调试了一个前同事留下的代码,发现了一个比较奇怪的问题。那就是:在一个大量循环数据库查询的过程中,基于thinkphp5
的一个代码报错了,错误信息是连接数过多。那么如何解决这个奇怪的问题呢?
本文测试环境:mac
、php@7.2
、thinkphp@5.0.24
。
基本描述
在一个for
循环中,多次使用thinkphp
函数进行了数据库查询。报错信息如下:
SQLSTATE[08004][1040]Too many connections
截图如下:
当然截图里面显示的错误位置,对于一般的程序员来说,可能并不是个有用的信息。程序员所触发错误的地方,可能是这样的:
foreach ($details as $key => $detail) {
$res = db("sometable")->where(["link" => $detail["link"]])->find();
if($res){
db('sometable')->insert($detail);
}
}
修复方案
这个修复的方案非常简单,修改语句db('table')
为Db::table('table')
。例如:
foreach ($details as $key => $detail) {
$res = Db::table("sometable")->where(["link" => $detail["link"]])->find();
if($res){
Db::table('sometable')->insert($detail);
}
}
相关链接
- 《thinkphp框架,如何查询出NULL的mysql数据?》 https://newsn.net/say/mysql-null-thinkphp.html
- 《真实黑客案例:thinkphp5网站一键变肉鸡》 https://newsn.net/say/thinkphp-trojan-poc.html
总结
本文中,苏南大叔就说的是一个thinkphp5
的一个小小的使用技巧。对于CRUD
仔来说,这个技巧,需要掌握哦~ 更多thinkphp
的相关使用技巧,欢迎查看苏南大叔的博客:


