Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么时候应该关闭singleton类的sql连接_Php_Mysql_Database Connection - Fatal编程技术网

Php 什么时候应该关闭singleton类的sql连接

Php 什么时候应该关闭singleton类的sql连接,php,mysql,database-connection,Php,Mysql,Database Connection,我在PHP项目中使用了一个单例数据库连接类来连接MySql数据库 // the singleton method public static function getDatabaseConnection() { if (self::$databaseConnection == null) { self::$databaseConnection = new DatabaseConnection(); self::$databaseConnection

我在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();
    }
}
初始化singleton对象时,它将连接到数据库

我只是不知道什么时候应该关闭这个连接?不关闭它是否可以保存

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

我倾向于在单身人士的生命周期内不保留与数据库的永久连接

管理连接寿命取决于
mysqli
,而
MySql
则是获得到数据库的新连接,或者,您可以通过

理由:

  • 如果您在网络中没有一直积极使用连接 singleton,应用程序的另一个组件可能需要连接和 更好地利用它

  • 此外,通过在不再需要连接时立即释放连接, 您将更快地发现bug,例如,在您有未提交的 交易

  • 最后,如果与数据库的连接断开,您的 singleton在任何情况下都需要重新连接


TL;DR-像任何其他消费者一样,尽快连接、使用和断开与singleton的连接。

PHP将在脚本终止时关闭它。你不需要手动关闭它,真的。如果您有重新建立它的原因,您可以关闭并重新打开它。注意:当您连接到
mysqli
时,我在那里看到一个
mysql\u错误()。这两个API不兼容。您应该检查
mysqli\u connect\u error()
它已被编辑,谢谢您的提示。:)