我正在学习 php/mysql。对于某些问题,我似乎没有找到明确的答案。您能否澄清其中的一些问题或将我指向可靠的来源。谢谢。
(1) 如果我不再需要数据库对象,取消设置对象是否会释放所有相关资源(连接/内存保存结果等),或者我是否必须调用$mysqliResult->free()
和/或$mysqliObj->close()
在调用unset($mysqliObj)
.
(2) 另外,如果我使用数据库抽象层,其中抽象类的成员持有 mysqli 对象,是否取消$dbAbstractionObj
为其他脚本调用释放 mysql 连接,或者我必须$this->mysqli->close()
在数据库抽象类的析构函数中调用.. .我知道PHP会在脚本执行结束时清理所有内容,但我想知道在脚本运行时执行这些操作是否有好处,其中大量数据被获取和处理......我的例子想说:
(1)
$mysqli = new Mysqli($host, $user, $pass, $database);
$result = $mysqli->query('...');
$data = $result->fetch_all(MYSQLI_ASSOC);
/* Now if i don't need $mysqli any futher but would be doing
other stuff on $data that might take a while, do I just */
unset($mysqli)
/* OR */
$result->free();
$mysqli->kill($mysqli->thread_id);
$mysqli->close();
unset($mysqli);
?>
(2)
<?php
class Database {
private $mysqli;
public function __construct(array $config) {
if (!$this->mysqli = new mysqli($config['host'], $config['user'], $config['pass'], $config['database'])) {
throw new Exception("Couldn't connect to database");
}
}
/* do i need a destructor to close the connection when i unset the
Database object... like */
public function __destruct() {
$this->mysqli->kill($this->mysqli->thread_id);
$this->mysqli->close();
}
/* other methods for select, update, insert, delete */
}
?>