Когда мне следует позвонить mysqli :: close? Я никогда не использовал, если инструкции для проверки успешности bind_param (), prep () и execute (). Должен ли я вызвать $ stmt-> close () в конце метода (см. Ниже). Или я должен вызвать его после каждого условия, гарантируя, что я закрою соединение с базой данных, даже если на каком-то этапе процесс завершится неудачей, например bind param.
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 }
Когда PHP выходит, он изящно закрывает соединения с базой данных.
Единственной причиной использования метода close является то, когда вы хотите прекратить соединение с базой данных, которое больше не будет использоваться, и вам нужно много чего: как обрабатывать и передавать потоки данных, но если это быстро, вы можете забыть о закрытии заявления.
Помещение в конец скрипта означает избыточность, отсутствие производительности или увеличение памяти.
Важно: отменить неиспользуемые данные, и если вы захотите избежать утечек памяти (которые в моем скромном обращении являются проблемой ядра PHP в этом случае), используйте:
mysqli_kill(); mysqli_close();
Таким образом, сокет тоже убит.
Вы должны всегда изящно закрыть соединение, когда вы закончите с ним, чтобы избежать проблем с производительностью и памятью / утечкой. С другой стороны, вы также должны убедиться, что вы действительно с ним справились – ваш скрипт выйдет из строя, если вы попытаетесь использовать закрытое соединение.
То же самое касается утверждений. Если заявление больше не будет использоваться, утилизируйте его соответствующим образом.
Просто подумал, что вы можете создать другой метод, называемый function_close
и вызвать его после вызова метода function_name
.
Таким образом, если вы перейдете на pdo или mongo, вам просто придется реорганизовать методы, а не каждый экземпляр close
.
вы должны закрыть его, особенно после многопроцессорного запроса ( http://php.net/manual/en/mysqli.multi-query.php ), поскольку вы можете получить проблемы с памятью. В противном случае закрытие не требуется.