打开和关闭与db的连接或保留它

时间:2015-07-22 09:43:22

标签: php database

我已经看到很多关于.NETC#应用程序的答案,但我没有找到我想要的关于Web的应用程序(或者我没有搜索到好吧,我为它道歉。)

我的问题是在查询期间与数据库的连接:我应该打开和关闭每个查询我正在做的连接,还是应该创建一个并保持所有这些? 我想它是第一个,但我想知道关于性能安全性之间的差异的一些信息。

此外,这足以关闭连接:

$dbh = new PDO('mysql:host=localhost;dbname=foo', '', '')
// queries
$dbh = null;

1 个答案:

答案 0 :(得分:6)

没有。如果您需要效果,则应关闭连接。通过手动关闭连接,您将对安全性产生影响。关闭连接会使事情变慢。

我将根据您的表现标准编写其余答案,我假设您通过php-fpm提供php(如果没有,您应该)。

关闭并打开连接会带来与MySQL握手和打开文件描述符的开销。如果您有很多请求,此过程将影响性能,无法获益。 但是,使用持久性连接可以提高性能。

原因如下:一旦php脚本结束,php将保持连接打开。进入的下一个请求将使用已建立的连接 - 您可以避免握手,tcp开销以及什么不是。

摘自php手册:

  

许多Web应用程序将从持久连接中受益   到数据库服务器。持久连接最终没有关闭   脚本,但在另一个脚本请求时被缓存并重新使用   使用相同凭据的连接。持久连接   缓存允许您避免建立新的开销   每次脚本需要与数据库通信时产生连接   在更快的Web应用程序中。

Source - >向下滚动到示例4以了解如何实现此目的。