应该在PHP中缓存MySQL连接吗


Should you cache a MySQL connection in PHP?

缓存MySQL连接有什么缺点吗?

例如,

$mysqli = new mysqli(params);
apc_store('mysqli', $mysqli);

如果你的网站上有很多用户都需要连接,这将节省一些时间。与其为每个用户打开一个连接,为什么不缓存它呢?

我在谷歌上没有找到任何东西,只是想知道我是否错过了什么。

谢谢你抽出时间。

mysqli对象不是可以缓存的对象。它是资源,而不是普通对象。

从缓存中取出它需要重新连接到数据库服务器,这意味着缓存版本需要以明文形式存储密码,如果可以缓存,这将是一个安全缺陷。

此外,当您从缓存中取出数据库服务器时,也不能保证它仍然可用。

而且多个PHP请求无法共享同一个缓存资源。这个计划有各种各样的问题。

实现目标的解决方案是持久的mysqli连接,因此PHP运行时环境维护一定数量的连接,并可以在一个PHP请求到下一个请求之间重用它们。