mysqli – Muss ich wirklich $result->close(); & $mysqli->close();?

Lesezeit: 3 Minuten

Benutzer-Avatar
James

Habe gerade angefangen mysqli zu benutzen. Wenn ich mit kleinen Datensätzen auf kleinen Websites arbeite (in Bezug auf den Datenverkehr), muss ich diese wirklich ständig verwenden?

$result->close(); 
$mysqli->close();

Ist für jemanden, der benutzerdefinierte PHP- und MySQL-Arbeiten ohne Framework durchführt, mysqli die allgemein bevorzugte Art der Interaktion mit MySQL?

PHP schließt alle geöffneten Dateien und DB-Verbindungen am Ende des Skripts. Es empfiehlt sich, dies manuell zu tun, wenn Sie mit den Verbindungen fertig sind, aber es ist keine Katastrophe, wenn Sie dies nicht tun. Wenn Sie eine DB-Verbindung haben, die im gesamten Skript verwendet wird, können Sie sie auch offen lassen.

+1 auf PDO

  • Es scheint sie nicht automatisch zu schließen, wenn das Skript durch einen schwerwiegenden Fehler beendet wird

    – Tofandel

    22. März 2021 um 19:34 Uhr

Benutzer-Avatar
Ixalmida

Laut aktueller Dokumentation sollte zusätzlich zu $mysql->close() immer $mysql->kill() verwendet werden.

$thread = $mysqli->thread_id;
$mysqli->kill($thread);
$mysqli->close();

  • Wie bereits erwähnt, ist es eine gute Praxis, Ihre eigenen Aufräumarbeiten durchzuführen, aber die Dokumentation, soweit ich weiß, erwähnt zum Zeitpunkt des Schreibens nicht, dass Sie es verwenden sollten. +1 für gute Praxis.

    – PatomaS

    20. Oktober 2012 um 4:59 Uhr

  • Die PDO-Behauptung erscheint mir bestenfalls zweifelhaft, und ich bin mir ziemlich sicher, dass Sie die letzten Zeitstempel von PDO-bezogenen Dateien in ihrem GitHub-Repo sehen würden. Haben Sie handfeste Beweise dafür?

    – GordonM

    24. Dezember 2013 um 21:21 Uhr

  • Zusätzlich zu dem, was @GordonM erwähnt, fehlt in der Antwort der Hinweis auf die Behauptung “Sie sollten immer $mysql->kill() verwenden”.

    – hakre

    24. Dezember 2013 um 21:25 Uhr

  • @hakre wenn er über die Dokumentation spricht mysqli::close Es ist nur ein Kommentar im Wörterbuch und wurde 8 Mal heruntergestuft: „Sie sollten immer die Funktion mysqli_kill() vor mysqli_close() verwenden, um den von PHP verwendeten TCP-Socket tatsächlich zu schließen und freizugeben. Garbage Collection nach der Skriptausführung noch mysqli_close() Beenden Sie den TCP-Socket nicht von selbst.”

    – DJG22

    30. April 2014 um 15:51 Uhr


  • Salzkörnchen … seien Sie sich bewusst, dass ich mich auf die Dokumentation einer alten PHP-Version bezog. Ich bin mir sicher, dass sich die Verbindungsbehandlung seitdem etwas geändert hat. Außerdem bin ich jetzt ein großer Befürworter von Laravel, also denke ich selten mehr über den Verbindungslebenszyklus nach. Es wäre ein Kinderspiel, PDO- mit MySQLi-Verbindungszeiten zu vergleichen, indem man einfach die Verbindung in der “.env”-Datei austauscht, obwohl ich keine wirkliche Lust habe, es zu versuchen.

    – Ixalmida

    9. April 2015 um 21:47 Uhr

Sie sollten es sich zur Gewohnheit machen, die Bereinigung richtig durchzuführen (Call Close, sobald Sie fertig sind), oder die Ressourcenlecks können sich allmählich ansammeln, bis sie die Leistung beeinträchtigen.

Soweit welche DB-Schicht, Lernen PDO sollte sich lohnen, da es gut gestaltet und mit allen wichtigen Datenbanken kompatibel ist.

  • +1 für gute Praktiken und Aufräumen. -1 auf pdo. Wenn es nicht wirklich nötig ist, fügen Sie einfach eine weitere Ebene der Komplexität hinzu.

    – PatomaS

    20. Oktober 2012 um 4:54 Uhr


  • Wenn der einzige Grund für die Verwendung von PDO die Kompatibilität mit anderen Datenbanken ist, dann ist dieser Grund für diejenigen von uns strittig, die niemals eine andere Datenbank verwenden und niemals verwenden werden.

    – Vinzenz

    26. Februar 2019 um 0:16 Uhr

Es empfiehlt sich, Ressourcen frühzeitig freizugeben, wenn sie nicht mehr benötigt werden. Dadurch kann verhindert werden, dass Ressourcen herausschauen, wenn mehr Benutzer gleichzeitig auf dieselbe Seite zugreifen

1228500cookie-checkmysqli – Muss ich wirklich $result->close(); & $mysqli->close();?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy