【问题标题】:PHP & PDO: One Connection vs More-than-one ConnectionsPHP & PDO:一个连接与多个连接
【发布时间】:2011-07-05 01:58:00
【问题描述】:

在我的 PHP 程序中,我需要针对任何给定的网页请求访问数据库 0 到 3 次。我正在使用 PDO 与 MySQL 进行交互。首先我使用这样的东西创建一个数据库连接:

$dbh = new PDO("mysql:host=$hostname;dbname=animals", $username, $password);

然后我做我需要做的事情并像这样关闭连接:

$dbh = null;

我现在打开和关闭一个连接 0-3 次,与我需要与 MySQL 交互的次数相同。

我的问题是,我是否应该重新使用此连接?我的查询不是一个接一个,它们分散在我的程序中,我真的不认为一个接一个地运行它们会很容易。

那么是创建一个新的数据库连接并在每次交互(查询)时关闭它还是让连接保持打开并重用它更好?有什么区别吗?

谢谢!

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    对于典型的网站页面,您应该对所有查询重复使用相同的连接。

    花时间断开和重新连接是不值得的。

    【讨论】:

      【解决方案2】:

      除非您的页面需要花费大量时间来运行(相对而言时间很长),否则放弃连接是没有意义的。与实际执行查询相比,您最终会在连接/断开连接上浪费更多的周期。就连接而言,MySQL 相当轻量级,但它仍然加起来。

      【讨论】:

        【解决方案3】:

        该网站说:“您必须拥有 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; (不使实例无效)不是一个好主意。

        【讨论】:

          猜你喜欢
          • 2016-04-02
          • 2018-10-19
          • 2019-06-04
          • 1970-01-01
          • 2015-05-18
          • 1970-01-01
          • 1970-01-01
          • 2013-03-27
          • 2014-02-02
          相关资源
          最近更新 更多