PDOclosures连接
关于PDO与MySQLi相比,只是一个相当简单的问题。
使用MySQLi,可以closures连接:
$this->connection->close();
但是,对于PDO,它声明您使用以下方式打开连接:
$this->connection = new PDO();
但要closures连接,请将其设置为null
。
$this->connection = null;
这是正确的,这将实际上释放PDO连接? (我知道它是因为它被设置为null
。我的意思是MySQLi你必须调用一个函数( close
)来closures连接。 PDO就像= null
一样容易断开? 还是有一个closures连接的function?
根据文件,你是正确的( http://php.net/manual/en/pdo.connections.php ):
该连接在该PDO对象的生命周期中保持活动状态 。 要closures连接,您需要通过确保所有剩余的引用被删除来销毁对象 – 您可以通过将NULL分配给保存该对象的variables来执行此操作。 如果你没有明确地做到这一点, PHP将在脚本结束时自动closures连接 。
请注意,如果您将PDO对象初始化为持久连接,它将不会自动closures连接。
$conn=new PDO("mysql:host=$host;dbname=$dbname",$user,$pass); // If this is your connection then you have to assign null // to your connection variable as follows: $conn=null; // By this way you can close connection in PDO.
我创build了一个派生类,使其具有更多的自logging指令,而不是“$ conn = null;”。
class CMyPDO extends PDO { public function __construct($dsn, $username = null, $password = null, array $options = null) { parent::__construct($dsn, $username, $password, $options); } static function getNewConnection() { $conn=null; try { $conn = new CMyPDO("mysql:host=$host;dbname=$dbname",$user,$pass); } catch (PDOException $exc) { echo $exc->getMessage(); } return $conn; } static function closeConnection(&$conn) { $conn=null; } }
所以我可以调用我的代码之间:
$conn=CMyPDO::getNewConnection(); // my code CMyPDO::closeConnection($conn);