首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在取消设置mysql对象之前释放结果并关闭连接,或者只是取消设置会破坏对象n释放资源?

在取消设置mysql对象之前释放结果并关闭连接,或者只是取消设置会破坏对象n释放资源?
EN

Stack Overflow用户
提问于 2013-07-09 04:03:26
回答 1查看 1.3K关注 0票数 2

我正在学习php/mysql。我似乎找不到一个明确的答案来回答一些问题。你能给我澄清一些吗?或者告诉我一个可靠的来源。谢谢。

(1)如果我不再需要数据库对象,取消设置该对象是否会释放所有相关资源(连接/内存占用资源等)或者我必须在调用unset($mysqliObj)之前调用$mysqliResult->free()和/或$mysqliObj->close()

(2)另外,如果我使用数据库抽象层,其中抽象类的成员持有mysqli对象,取消设置$dbAbstractionObj是否会释放mysql连接以供其他脚本调用,或者我是否必须在数据库抽象类的析构函数中调用$this->mysqli->close()……我知道PHP会在脚本执行结束时清理所有的东西,但是我想知道在脚本运行的时候,在获取和处理大量数据的时候,这样做是否有好处……下面是我想说的例子:

(1)

代码语言:javascript
复制
$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)

代码语言:javascript
复制
<?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 */
}
?>
EN

回答 1

Stack Overflow用户

发布于 2013-11-10 04:16:32

在使用mysqli时,一次只能有一个准备好的语句/执行。如果您试图打开并执行两个准备好的语句而不关闭,您将生成一个错误。您在db抽象器之后显式打开的任何资源都应该在执行期间由您处理。也就是说,如果您使用抽象器中的信息打开一个连接,最佳实践是显式地关闭它(但不是取消设置基础资源本身),从而释放与其关联的资源。拥有一个基本的mysql连接并不是非常消耗资源,但是保持大量未关闭的到mysql服务器的连接可能会导致它停止接受连接(取决于配置)。大多数执行完成后,如果在运行时没有显式释放相关的mysql资源,则会自动释放这些资源。

告诉我这有没有帮助,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17535036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档