连接池连接mysql不放_mysql 连接长期不释放及连接池相关问题

最近接手一个老系统,其中有部分逻辑是通过脚本去完成的。

核心逻辑大概是这样:

$db = new Mysqli($db_host, $db_user, $db_password);

function doSomething($db){

// 查询符合条件的数据

if($exists){

// todo

}

}

while(true){

doSomething($db);

}

这个脚本基本上是 7×24 小时在那里工作。

暂且不讨论这种处理方式有多么不合理,我想请问:

如果长期占用一个连接不释放,会导致什么问题?

上面的场景是否需要使用连接池?

回答

1 不会有啥问题,但是要注意 mysql 的 wait_timeout 的值,脚本里面不要出现大于这个时间的空闲,免得服务端主动断开连接,所以,你可以在里的 doSomething 逻辑开始,加个连接判断,发送个 ping 命令过去,看看连接是否还能用,不能用了就重建连接.

2 不需要,简单的 php cli 程序,以单进程的方式运行,你的脚本也已顺序的方式执行,你有没有使用多线程处理,那么连接池就没有任何意义,因为就算是你做了连接池,这个进程里也就一个连接在活跃,如果你使用 swoole 以及相关技术的话,那就需要连接池了.

1.我理解的是,上边代码mysqli连接数据库的链接一直存在,而且是同一个连接,每次需要的时候就调用,这样只是会有一些内存的占用,但是由于不需要重复建立连接也节省了建立连接的开销

感觉除了有内存的开销其他不会出现问题

2.不需要连接池,mysqli本身建立的连接一直保存,不会重复建立,连接池的功能本身就是为了复用原来建立的连接节省重复建立连接开销的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值