0

我在网上创建了一个我需要的课程。此类在她的生命周期中打开与本地 MySql 数据库的连接。

在我的代码中,这个类实例的范围是本地的,就像这个例子

function doSomething(){
    $class = new MyClass();
    // ... do something with $class
}

doSomething();

因此,每次函数结束时,对象都会被销毁。但我认为 db 连接永远不会停止,因为在对 doSomething 类进行一定次数的调用后会出现错误“无法连接到数据库”。

看到类的析构函数它执行的唯一操作是

unset($this);

unset($this) 是否也关闭数据库连接?关闭它的最佳方法是什么?

谢谢

4

3 回答 3

0
public function __destruct()
{
unset($objname);
session_destroy();
}
于 2013-10-09T12:51:24.587 回答
0

PHP 在请求结束时关闭 mysql 连接通常不需要使用 mysql_close(),因为非持久打开的链接会在脚本执行结束时自动关闭。

如果您在脚本执行期间多次运行 doSomething - 您可以将 mysql_close 添加到析构函数中

此外,您可以使用持久连接 ( mysql_pconnect ),这将为您提供更好的性能

只是要注意 - 最好使用mysqli扩展

于 2013-10-09T20:27:21.307 回答
0

我只是写了以下内容,希望对您有所帮助:

class db {
    public function __construct() {
        $this->conn = mysqli_connection('localhost','user','pass','dbname');
    }

    public function mysql_q($sql) {
        $result = mysqli_query($this->conn,$sql);
        return ($result) ? true : false;
    }

    public function __destruct() {
        mysqli_close($this->conn);
    }
}

$db = new db(); // auto call __construct to connect db
echo ($db->mysql_q($sql)) ? "Successful!" : "Failed!";
unset($db); // auto call __destruct to close connection
于 2017-11-28T05:56:19.713 回答