1

确保我正在编写一个方案以最大限度地减少与我的 MySQL 数据库的连接数的最佳方法是什么?

目前,我的服务器上有一个 ubuntu / PHP / apache 设置,我正在使用以下代码和 PDO 来确保持久连接:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));

但是,我似乎始终有 10 个或更多连接。我不确定这是为什么。引用自php.net

许多 Web 应用程序将受益于与数据库服务器建立持久连接。持久连接不会在脚本结束时关闭,但会在另一个脚本使用相同凭据请求连接时被缓存并重新使用。持久连接缓存允许您避免每次脚本需要与数据库通信时建立新连接的开销,从而提高 Web 应用程序的速度。

这是否意味着我必须写入 $dbh = null “关闭”并缓存连接?

4

2 回答 2

2

根据定义,持久连接是未关闭的(即持久连接;好处是 PHP仍然连接到数据库以供其他脚本使用(即,每次脚本运行时,它都不需要拆除和设置新的数据库连接)。

不必写$dbh = null,因为这实际上暗示了脚本执行的终止;但是,如果您想在脚本结束之前表明您已完成连接,您可以显式编写它(然后,PHP 的垃圾收集器将在某个时候释放资源并将其返回到连接池以供其他使用脚本的使用)。

如果您希望在每个脚本结束时关闭并销毁连接,请不要使用持久连接!

于 2013-10-16T07:18:44.247 回答
1

“我似乎还有 10 个连接”似乎不是一个合理的问题或担忧,因为只要 PHP 正在运行,该属性将只保存数据库资源对象。因此,正如@eggyal 所说,如果您希望连接关闭或销毁,请不要使用持久连接。

另请阅读:

于 2013-10-16T07:27:45.333 回答