很抱歉,如果这个问题的标题没有解释实际问题。我找不到合适的词来命名这个问题的标题。
我有一个像这样的数据库类:
class Database
{
private $link;
private $host, $username, $password, $database;
public function __construct($setup)
{
if ($setup == 'default') {
$this->host = 'localhost';
$this->username = 'root';
$this->password = 'root';
$this->database = 'infobox_sierraleone';
}
if ($setup == 'promo') {
$this->host = 'localhost';
$this->username = 'root';
$this->password = 'root';
$this->database = 'infobox';
}
$this->link = mysql_connect($this->host, $this->username, $this->password)
OR die("There was a problem connecting to the database.");
mysql_select_db($this->database, $this->link)
OR die("There was a problem selecting the database.");
}
public function __destruct()
{
mysql_close($this->link)
OR die("There was a problem disconnecting from the database.");
}
}
我在一个单独的文件中创建了上面类的不同对象:
include 'conn/database.php';
$db = new Database('default');
$db_promo = new Database('promo');
当我运行上面的脚本时,我收到此消息:
There was a problem disconnecting from the database.
我从__destruct()函数中意识到这条消息。 我已经研究了一段时间,我仍然不清楚为什么这个消息显示以及如何摆脱它。
非常感谢任何形式的帮助。
谢谢。
编辑: 删除了构造函数中的return语句。
答案 0 :(得分:0)
由于您没有销毁自己的对象,因此在脚本完成时它们会被PHP破坏。 PHP然后只是破坏它所有的东西,但不一定是正确的顺序。
在这种情况下,显然PHP首先杀死MySQL连接,然后继续销毁其他对象,包括你的。然后,如果不让脚本die
失败,您的对象将尝试断开已断开连接的数据库连接,这将被忽视。