Note with Francis' example, using the function name link() will throw an error at runtime as it is already a function within the language. see: http://php.net/manual/en/function.link.php
(PHP 5, PHP 7)
mysqli::close -- mysqli_close — Закрывает ранее открытое соединение с базой данных
Объектно-ориентированный стиль
Процедурный стиль
Закрывает ранее открытое соединение с базой данных.
Открытые непостоянные соединения MySQL и результирующие наборы автоматически удаляются сразу по окончании работы PHP-скрипта. Следовательно, закрывать соединения и очищать результирующие наборы не обязательно, но рекомендуется, так как это сразу же освободит ресурсы базы данных и память, занимаемую результатами выборки, что может положительно сказаться на производительности. Больше информации можно почерпнуть в разделе Освобождение ресурсов
link
Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()
Возвращает true
в случае успешного завершения или false
в случае возникновения ошибки.
См. mysqli_connect().
Замечание:
mysqli_close() не закрывает постоянные соединения. Для получения подробностей см. руководство по persistent connections.
Note with Francis' example, using the function name link() will throw an error at runtime as it is already a function within the language. see: http://php.net/manual/en/function.link.php
Since a lot of manual examples recommend to use a variable to initiate your connection, it is interesting to know that mysqli_close() will unset that variable, causing further connection attempts to fail.
ex:
$link = mysqli_connect($host, $user, $pw);
if ($link) {
// Database is reachable
mysqli_close($link);
}
if ($link) {
// Database unreachable because $link = NULL
}
Easiest solution for me is to initiate connection through a function.
ex:
function link() {
global $host;
global $user;
global $pw;
global $link;
$link = mysqli_connect($host, $user, $pw);
}
link();
// Database is reachable
mysqli_close($link)
link();
// Database is reachable
mysqli_close($link)
I've had situations where database connections appeared to persist following php execution. So, now, my __destructor function explicitly contains a $cxn->close(). It hurts nothing, and helps avoid memory leaks.