2016-06-17 8 views
3

Ich habe das folgende Bit des Codes, wo ich nach einer zu einer MySQL Datenbank umleiten.Wird die MySQLi-Funktion close() noch nach exit() aufgerufen?

if ($connect->query($dragon_sql) === TRUE) { 
    echo "You've picked the dragon book!"; 
    header('Location: index.php'); 
    exit(); 
} else { 
    echo "Error: " . $sql . "<br>" . $connect->error; 
} 

$connect->close(); 

Ich habe auf dem Handbuch Seite gelesen, dass exit

Ausführung des Skripts beendet wird. Shutdown-Funktionen und Objektdestruktoren werden immer ausgeführt, auch wenn exit aufgerufen wird.

So ist close() eine Shutdown-Funktion oder Objektdestruktor? Ich kann es nicht wirklich sagen, indem ich die PHP-Handbuchseite dafür lese.

+5

Die Dokumente sagen * "Offene nicht persistente MySQL-Verbindungen und Ergebnismengen werden automatisch ** zerstört, wenn ein PHP-Skript seine Ausführung beendet. Daher ist das explizite Schließen offener Verbindungen und das Freigeben von Ergebnismengen optional Dadurch werden sofort Ressourcen an PHP und MySQL zurückgegeben, was die Performance verbessern kann. "* Da die Verbindung ein Objekt ist, ist' close() 'ein Destruktor. –

+0

@JayBlanchard Vielen Dank! Vollständig beantwortet meine Frage – 8protons

+1

Um die Frage in Ihrem Titel zu beantworten (* die nicht die Frage in Ihrer Frage *) entspricht '' close() 'wird nie aufgerufen, da die Skriptausführung unmittelbar nach der Weiterleitung beendet wird. –

Antwort

-1

exit() oder die() hört einfach auf, den Rest des Skripts auszuführen.
so ist es kein Destruktor.
es ist mehr eine Abschaltfunktion

Mysqli close() Funktion die Verbindung zur Datenbank schließt .. obwohl es nutzlos sein gesagt, weil die Verbindung bereits Ende des Skripts geschlossen ist.

+1

Er fragte, ob 'close()' war ein Destruktor oder eine Shutdown-Funktion, nicht 'exit()'. – GrumpyCrouton

Verwandte Themen