【问题标题】:When should I close the sql connection of singleton class什么时候应该关闭单例类的sql连接
【发布时间】:2014-03-08 13:35:18
【问题描述】:

我在我的 PHP 项目中使用单例数据库连接类连接到 MySql 数据库。

// the singleton method
public static function getDatabaseConnection()
{
    if (self::$databaseConnection == null)
    {
        self::$databaseConnection = new DatabaseConnection();
        self::$databaseConnection->connect();
    }
    return self::$databaseConnection;
}

private function connect()
{
    $this->connection = new mysqli($this->hostName, $this->username, $this->password, $this->databaseName) 
            or die (mysqli_connect_error());
}

// When should I call this method?!
public function close_connection() {
    if (isset($this->connection)) {
        $this->connection->close();
    }
}

在初始化单例对象时,它将连接到数据库。

我只是不知道什么时候应该关闭这个连接?不关闭就保存了吗?

任何额外的提示将非常感激,谢谢。

【问题讨论】:

  • PHP 将在脚本终止时关闭它。你真的不需要手动关闭它。如果您有理由想要重新建立它,您可以关闭并重新打开它。
  • 注意:当您连接到mysqli 时,我在那里看到mysql_error()。这 2 个 API不兼容。你应该检查mysqli_connect_error()us3.php.net/mysqli_connect_error
  • 已编辑,感谢您的关注。 :)

标签: php mysql database-connection


【解决方案1】:

我倾向于在单例的生命周期内保持与数据库的永久连接。

留给mysqli来管理连接寿命 - 到MySql它是relatively cheap来获取到数据库的新连接,或者,您可以通过@使用持久连接(连接池) 987654322@

理由:

  • 如果您在 单例,您的应用程序的另一个组件可能需要连接和 更好地利用它。

  • 此外,通过在不再需要连接时立即释放连接, 你会更快地发现错误,例如你有一个未承诺的地方 交易。

  • 最后,如果与数据库的连接断开,您的 无论如何,单身人士都需要重新连接。

TL;DR - 与任何其他消费者一样,尽快连接、使用和断开与您的单身人士的连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2018-05-08
    • 2012-02-28
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多