在我的PHP程序中,我需要在任何给定的网页请求中在0到3次之间访问数据库。我正在使用PDO与MySQL进行交互。首先,我使用以下内容创建数据库连接:
$dbh = new PDO("mysql:host=$hostname;dbname=animals", $username, $password);
然后我做我需要做的事情并关闭这样的连接:
$dbh = null;
我现在打开和关闭连接0-3次,与MySQL需要的次数相同。
我的问题是,我应该重新使用此连接吗?我的查询不是一个接一个,它们分散在我的程序中,我真的认为一个接一个地运行它们并不容易。
创建新的数据库连接并为每次交互(查询)关闭它或者只是让连接保持打开并重新使用它会更好吗?这有什么不同吗?
谢谢!
答案 0 :(得分:2)
对于典型的网站页面,您应该为所有查询重复使用相同的连接。
花时间断开连接并重新连接是不值得的。
答案 1 :(得分:0)
除非你的网页需要花费大量的时间来运行(巨大的相对),否则放弃连接是没有意义的。与实际执行查询相比,最终会在连接/断开连接上浪费更多周期。就连接而言,MySQL非常轻量级,但它仍然相加。
答案 2 :(得分:-1)
该网站说:“您必须拥有50个声誉才能发表评论”。我的声誉很差,所以我无法发表评论,但是我想在以下位置添加通知:
对于典型的网站页面,您应该重新使用相同的连接 用于所有查询。
绝对正确,但是如果需要非典型脚本(例如,比较远程数据库和本地数据库之间的表),则不能使用同一连接。必须关闭第一个连接并同时建立一个新连接,或者同时具有2个单独的连接(使用不同的名称)。 在这种情况下,我更喜欢第二种选择,因为使用“ $ dbh = null;”关闭了连接。在某些情况下可能会有些困难。 (PDO closing connection)
这里是[来自文档:https://www.php.net/manual/en/pdo.connections.php]的解释,为什么在使用“ $ dbh = null;”时要格外小心(也应关闭所有实例):
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// use the connection here
$sth = $dbh->query('SELECT * FROM foo');
// and now we're done; close it
$sth = null;
$dbh = null;
?>
因此,只有$ dbh = null; (不删除实例)不是一个好主意。