php-mysql包装类__destruct方法无法关闭数据库


php mysql wrapper class __destruct method fails to close database

有人能解释为什么从类析构函数调用mysql_close()时失败吗 mysql_error()报告"连接关闭失败。"

<?php
class Database
{
    private $link_id = 0;
    private $query_id = 0;
    public $error = "";
    public $errorNumber = 0;
    public $affectedRows = 0;
    public function __construct($server, $user, $pass, $database)
    {
        $this->link_id = @mysql_connect($server, $user, $pass, false);
        if (!$this->link_id)
        {
            $this->DisplayError("Could not connect to server: <b>$this->server</b>.");
            die(mysql_error());
        }
        if(!@mysql_select_db($database, $this->link_id))
        {
            $this->DisplayError("Could not open database: <b>$this->database</b>.");
            die(mysql_error());
        }
    }
    public function __destruct()
    {
        if ($this->link_id)
        {
            if(!@mysql_close($this->link_id))
            {
                $this->DisplayError("Connection close failed.");
                die(mysql_error());
            }
        }
    }

根据第27903号错误报告,由于脚本执行结束,在调用类析构函数时,似乎已经清理了一些资源。

在任何情况下,如手册所示。。。

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