【问题标题】:Should I be closing a PDO database connection inside a method or on a calling page?我应该在方法内还是在调用页面上关闭 PDO 数据库连接?
【发布时间】:2011-09-13 13:17:47
【问题描述】:

我似乎无法找到答案。我知道要关闭 PDO 连接,您需要使用 $db=NULL;我一直在使用依赖注入来访问类中的数据库连接。我应该使用 $db=NULL;在方法内部,还是应该在调用查询的页面上使用它?

像这样:

public function find_all() {
     connect to $db;
       //run query
        $db = NULL;
          return query
}

或者应该是这样的:

$thing = Method::find_all();
 //display results
 $thing = NULL;

我一直在使用第一种方法,并没有出现任何错误,但我想确保我以正确的方式进行操作。谢谢。

【问题讨论】:

    标签: php database connection pdo


    【解决方案1】:

    脚本结束时,所有 PHP 连接都会自动关闭。但是,手动“处置”不再需要的对象并不是一个坏习惯。

    【讨论】:

      【解决方案2】:

      您的依赖注入容器可能会保留您的数据库连接的副本,因此虽然可以使用 unset($db) 或 $db = null 正常关闭它,但这仅在它是最后一个引用时才有效。

      此外,为每个“查找”方法打开和关闭数据库连接可能需要做更多的工作,除非您知道任何页面最多只能有一个查询。

      您的第二种方法将释放一些空间,但除非“$thing”是您的数据库连接或包含对您的数据库的最后引用,否则它也不会关闭您的数据库连接。

      【讨论】:

        【解决方案3】:

        在脚本末尾关闭所有连接是一个好习惯,但是如果您的脚本建立了很多连接,那么最好使用持久连接并且不要忘记关闭它们,否则您的数据库将打开太多连接.

        【讨论】:

        猜你喜欢
        • 2019-10-12
        • 1970-01-01
        • 1970-01-01
        • 2017-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        相关资源
        最近更新 更多