【发布时间】:2014-03-03 15:31:15
【问题描述】:
我遇到了那个错误,这行是这样的:
public function __destruct() {
$this->db->close();
}
我用的是PDO,是不是这个问题,PDO驱动不能识别这个功能吗?如果是,它在 PDO 中的等价物是什么?
【问题讨论】:
我遇到了那个错误,这行是这样的:
public function __destruct() {
$this->db->close();
}
我用的是PDO,是不是这个问题,PDO驱动不能识别这个功能吗?如果是,它在 PDO 中的等价物是什么?
【问题讨论】:
一个 PDO 连接被destroying its object: 关闭
连接在该 PDO 对象的生命周期内保持活动状态。要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁该对象——您通过将 NULL 分配给保存该对象的变量来做到这一点。如果您没有明确地这样做,PHP 将在您的脚本结束时自动关闭连接。
所以
$this->db = null;
应该可以。
【讨论】:
PDO 没有明确的“关闭”功能。你可以简单地做
$this->db = null
销毁对象,这将自动清理连接。
【讨论】:
您可以通过将句柄置于null 来关闭它
来自 php.net:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// use the connection here
// and now we're done; close it
$dbh = null;
?>
【讨论】:
将 PDO 变量设置为 null 会关闭连接并释放所有相关内存。
另一种方法是使用 closeCursor 关闭与服务器的连接,但保留 PDO 对象。
"closeCursor 释放与服务器的连接,以便其他 可能会发出 SQL 语句,但会使语句处于以下状态 使其能够再次执行。”
这意味着您可以继续运行 fetch() 等,即使连接已被释放。
同样,与 mysql_close() 不同,但仍然非常有用。
【讨论】:
PDO 没有关闭方法。要销毁 PDO 对象表示的连接,请使用 unset() 销毁对对象本身的所有引用。
【讨论】:
PDO 没有关闭方法。我想你可以尝试取消设置 $this->db,这个会自动断开
【讨论】: