Moin!
Welche "Nutzen" bringt es mir, eine mysql-Verbindung am Ende des Skriptes durch mysqli->close() explizit zu schließen?
Am Skriptende? Keinen Nutzen. Die Verbindung wird von PHP ohnehin selbsttätig geschlossen, wenn du das manuell vorher tust, kostet dich das den zusätzlichen Quelltext, bringt dir aber keinen meßbaren Vorteil.
Welchen "Nutzen" bringt es mir, ein prepared Statement zu schließen?
"Bringt" es was, oder ist es genaugenommen "richtig", unnötige Variablen, gleich zu unset()ten?
Deine Frage hat mindestens zwei Aspekte.
Zum einen die Frage nach dem konkreten Vorteil. Die Antwort hängt von den Umständen ab. Wenn die durch ein Schließen oder Freigeben von Ressourcen bzw. Löschen von Variablen wieder freiwerdende Speichermenge RAM im weiteren Skriptverlauf für andere Aufgaben benötigt wird, dann ist der Vorteil vermutlich ziemlich eindeutig zu sehen. Auf genau dieselbe Weise ist der Vorteil komplett unsichtbar, wenn es speichermäßig keinen Unterschied macht.
Der zweite Aspekt ist: Was ist guter Stil? Die Antwort hierzu hängt konkret von der Ressource ab, die freizugeben wäre.
- Eine DB-Connection stellt man einmal zu Beginn wieder her und läßt sie bis zum Skriptende leben.
- Den Puffer einer großen DB-Abfrage sollte man hingegen wieder freigeben, wenn die Daten nicht weiter benötigt werden.
- Die Freigabe von Variablen hingegen regelt sich durch die Kapselung in Funktionen (lokale Variablen) bzw. Methoden ziemlich von selbst: Ist die Funktion zu Ende, ist auch die Variable wieder freigegeben. Ein explizites unset() ist nur dann angesagt, wenn eine Variable wirklich gelöscht werden soll, weil das programmtechnisch zwingend so sein muß.
- Sven Rautenberg
"Love your nation - respect the others."