mysqli是否在同一请求中重用连接?

时间:2017-10-16 06:53:41

标签: php mysql mysqli

我有一段代码可以打开几个到同一个DB的冗余连接。基本上,相同的"连接"方法被多次调用(数十到数百,取决于数据),导致对new mysqli()进行多次相同的调用。

所以我在想 - 这听起来真的很糟糕,或者在这种情况下PHP / mysqli可能会以某种方式重用单个连接吗?

2 个答案:

答案 0 :(得分:2)

是的,创建一个新的mysqli实例将默认创建一个新连接。

您可以将mysqli实例包装成Singleton模式(不推荐)或仅实例化一个实例,然后使用Dependency Injection传递这个实例。

答案 1 :(得分:2)

是的,它听起来非常糟糕。

您应始终只创建一个连接,然后在整个脚本执行过程中使用它。有很多不同的技术可以实现,你可以选择最适合你的技术。

请注意,持久连接会使情况变得更糟,立即终止数据库连接。关于持久连接的事情是,一旦打开,在超时到期之前,它不能被其他进程使用。鉴于您正在从同一个脚本打开多个连接,您的脚本正在吞噬像食人魔这样的免费连接。而且他们的数量不是无限的。