什么时候调用mysqli :: close

时间:2012-01-31 16:42:32

标签: php mysqli prepared-statement

什么时候应该调用mysqli :: close?我从来没有习惯使用if语句来检查bind_param(),prep()和execute()是否成功。我应该在方法的末尾(下面)调用$ stmt-> close()。或者我应该在每个条件之后调用它,确保我关闭数据库连接,即使进程在某个阶段失败,例如绑定参数。

public function function_name($id,$new_id ){
    $query = "UPDATE TABLE SET name = ? WHERE field = ? ";
    if($stmt=$this->prepare($query)){
        if($stmt->bind_param("is", $id, $new_id)){
            if($stmt->execute()){

            }else{//Could not execute the prepared statement
                $message = "Could not execute the prepared statement";
            }
        }else{//Could not bind the parameters
            $message = "Could not bind the parameters";
        }
    }else{
        $message = "Could not prepare the statement";
    }
    return $message
}

4 个答案:

答案 0 :(得分:7)

当PHP退出时,它会正常关闭数据库连接。

使用close方法的唯一原因是当你想要终止不再使用的数据库连接时,你有很多事情要做:像处理和流式传输数据一样,但如果这很快,你可以忘记密切的陈述。

将它放在脚本的末尾意味着冗余,没有性能或内存增益。

什么是重要的:取消设置未使用的数据,如果你想避免内存泄漏(在我的简单操作中,在这种情况下是PHP内核的问题)使用:

mysqli_kill();
mysqli_close(); 

这样套接字也会被杀死。

答案 1 :(得分:0)

完成连接后,应始终优雅地关闭连接,以避免性能和内存/处理泄漏问题。另一方面,您还应该确保确实完成了它 - 如果您尝试使用已关闭的连接,您的脚本将崩溃。

同样适用于陈述。如果不再使用声明,请妥善处理。

答案 2 :(得分:0)

稍微想到你可以创建另一个名为function_close的方法,并在调用function_name方法后调用它。

这样,如果你改为pdo或mongo,你只需要重构方法而不是close的每个实例。

答案 3 :(得分:0)

你应该在多次查询(http://php.net/manual/en/mysqli.multi-query.php)后关闭它,因为你可能会遇到内存问题。否则就不需要关闭。