$stmt->close() vs. $stmt- > free_result()
Ich versuche zu klären, den Unterschied zwischen $stmt->close() und $stmt- > free_result() beim finalisieren einer vorbereiteten mysqli - Anweisung.
Bisher habe ich:
$mysqli = new mysqli(host,user,password,database);
$stmt = $mysqli->prepare(sql statement);
[...]
$stmt->free_result();
$mysqli->close();
und alles scheint gut zu funktionieren.
Aber ich habe gesehen, dass viele Programmierer verwenden $stmt->schließen Sie anstelle von $stmt- > free_result(). Und nachdem ich gesehen habe, sowohl von Ihnen:
$stmt->free_result();
$stmt->close();
$mysqli->close();
Also was soll ich wählen, unter welchen Umständen und warum?
InformationsquelleAutor Nicholaos Renessis | 2013-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
$stmt->free_result()
Speicherplatz frei in Bezug auf einen Ergebnissatz, in der Erwägung, dass$stmt->close()
schafft im Zusammenhang mit dem Arbeitsspeicher, um eine vorbereitete Anweisung. Anschließend ruft$stmt->close()
stornieren ohne Ergebnis geblieben.Im wesentlichen, ruft
$stmt->close()
denselben Effekt wie der Aufruf$stmt->free_result()
da bricht er den Satz Ergebnis als gut. Aber anrufen$stmt->free_result()
wird nicht klar aus dem Speicher verwendet, die von der vorbereiteten Anweisung, in dem Fall müssen Sie$stmt->close()
.Soweit, die man zu verwenden geht - es kann Situationen geben, wo Sie beabsichtigen, mit der vorbereiteten Anweisung initialisiert wurde, aber nicht mehr in der Notwendigkeit der Ergebnismenge, die Sie derzeit haben. In diesem Fall müssen Sie warten auf den Aufruf
$stmt->close()
bis Sie fertig sind mit der vorbereiteten Anweisung und rufen stattdessen$stmt->free_result()
vor der Ausführung eine weitere Aussage.InformationsquelleAutor Crackertastic
PHP beenden Sie Ihre Verbindung und Kostenlose Ressource, nachdem es beendet wurde;
mysqli::close Schließt eine vorbereitete Anweisung.
Da die Anzahl der insgesamt verfügbaren verbindungen begrenzt ist, die Befreiung der Ressource, auf die zweite Sie fertig sind mit es ist eine gute Praxis.
Und
mysqli_stmt::free_result Befreit gespeicherte Ergebnis Gedächtnis für die gegebene Anweisung behandeln.
es ist gute Praxis, freie explizit die Ressource, wenn Sie Sie nicht mehr benötigen. es könnte vermeiden, die eine schwere Last auf den server, wenn viele Anfragen gleichzeitig.
Beide nicht nie unbedingt notwendig zu berufen, und ist eine gute Praxis, die Verwendung von beide.
InformationsquelleAutor Emilio Gort