Я пытаюсь уточнить разницу между $ stmt-> close () и $ stmt-> free_result () при завершении подготовленного оператора mysqli .
До сих пор я использую:
$mysqli = new mysqli(host,user,password,database); $stmt = $mysqli->prepare(sql statement); [...] $stmt->free_result(); $mysqli->close();
и все работает нормально.
Но я видел, что многие программисты используют $ stmt-> close вместо $ stmt-> free_result (). И как только я увидел их обоих:
$stmt->free_result(); $stmt->close(); $mysqli->close();
Итак, что мне выбрать, при каких обстоятельствах и почему?
$stmt->free_result()
освобождает память, связанную с результирующим набором, тогда как $stmt->close()
освобождает память, связанную с подготовленным оператором. Впоследствии вызов $stmt->close()
отменяет любой оставшийся результат.
По сути, вызов $stmt->close()
обеспечит тот же эффект, что и вызов $stmt->free_result()
поскольку он также отменяет набор результатов. Но вызов $stmt->free_result()
не очистит память, используемую подготовленным оператором, и в этом случае вы должны использовать $stmt->close()
.
Насколько подходит для использования – могут быть ситуации, когда вы намереваетесь использовать подготовленный оператор, который вы инициализировали, но больше не нуждаетесь в наборе результатов, который у вас есть. В таком случае вы будете ждать при вызове $stmt->close()
пока не закончите с подготовленным оператором, и вместо этого вызовите $stmt->free_result()
перед выполнением другого оператора.
PHP закончит ваше соединение и освободит ресурс после его завершения;
mysqli :: close Закрывает подготовленное утверждение.
Поскольку количество доступных доступных подключений ограничено, освобождение ресурса, которое вы сделали с ним, является хорошей практикой.
А также
mysqli_stmt :: free_result Frees хранит память результатов для данного дескриптора дескриптора.
это хорошая практика, чтобы бесплатно освободить ресурс, когда вы им больше не нужны. это может привести к большой нагрузке на сервер, когда многие запросы выполняются одновременно.
Оба никогда не требуют строгого обращения, и это хорошая практика использования обоих.