我已经看到很多关于.NET
和C#
应用程序的答案,但我没有找到我想要的关于Web的应用程序(或者我没有搜索到好吧,我为它道歉。)
我的问题是在查询期间与数据库的连接:我应该打开和关闭每个查询我正在做的连接,还是应该创建一个并保持所有这些? 我想它是第一个,但我想知道关于性能和安全性之间的差异的一些信息。
此外,这足以关闭连接:
$dbh = new PDO('mysql:host=localhost;dbname=foo', '', '')
// queries
$dbh = null;
答案 0 :(得分:6)
没有。如果您需要效果,则应不关闭连接。通过手动关闭连接,您将对安全性产生影响。关闭连接会使事情变慢。
我将根据您的表现标准编写其余答案,我假设您通过php-fpm
提供php(如果没有,您应该)。
关闭并打开连接会带来与MySQL握手和打开文件描述符的开销。如果您有很多请求,此过程将影响性能,无法获益。 但是,使用持久性连接可以提高性能。
原因如下:一旦php脚本结束,php将保持连接打开。进入的下一个请求将使用已建立的连接 - 您可以避免握手,tcp开销以及什么不是。
摘自php手册:
许多Web应用程序将从持久连接中受益 到数据库服务器。持久连接最终没有关闭 脚本,但在另一个脚本请求时被缓存并重新使用 使用相同凭据的连接。持久连接 缓存允许您避免建立新的开销 每次脚本需要与数据库通信时产生连接 在更快的Web应用程序中。
Source - >向下滚动到示例4以了解如何实现此目的。