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 — Schließt die zuvor geöffnete Datenbankverbindung
Objektorientierter Stil
Prozeduraler Stil
Schließt die zuvor geöffnete Datenbankverbindung.
Offene nicht-persistente MySQL Verbindungen und Ergebnismengen werden bei der Beendigung der PHP-Skipt-Ausführung automatisch zerstört. Obwohl also das explizite Schließen von offenen Verbindungen und das Freigeben von Ergebnismengen optional ist, wird es dennoch empfohlen. Dadurch werden unmittelbar Ressourcen an PHP und MySQL zurückgeben, was die Performance verbessern kann. Weitere Information ist unter Freigeben von Ressourcen zu finden.
link
Nur bei prozeduralem Aufruf: Ein von mysqli_connect() oder mysqli_init() zurückgegebenes Verbindungsobjekt.
Gibt bei Erfolg true
zurück. Im Fehlerfall wird false
zurückgegeben.
See mysqli_connect().
Hinweis:
mysqli_close() schließt keine persistenten Verbindungen. Weitere Details sind der Handbuchseite zu persistenten Datenbankverbindungen zu entnehmen.
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.