In der PHP -Entwicklung ist die rationale Verwaltung der Ressourcenveröffentlichung ein wichtiger Link zur Gewährleistung der Programmstabilität und -leistung. Insbesondere wenn die Skriptausführung beendet ist und sicherstellt, dass Datenbankverbindungen, Dateihandles und andere Ressourcen ordnungsgemäß geschlossen sind, können Speicherlecks und andere potenzielle Probleme vermeiden. Dieser Artikel erweitert die PHP-integrierte Funktion Register_Shutdown_Function und führt vor, wie am Ende des Skripts automatisch Ressourcenveröffentlichungsvorgänge durchgeführt werden können.
Register_Shutdown_Function ist eine von PHP bereitgestellte Funktion, um eine Rückruffunktion zu registrieren, die am Ende der Skriptausführung automatisch aufgerufen wird. Unabhängig davon, ob das Skript normal endet oder aufgrund eines Fehlers endet, kann die Funktion ausgeführt werden, die einen zuverlässigen Hakenpunkt für die Ressourcenfreigabe liefert.
<?php
// Registrieren Sie eine Rückruffunktion, die beim Schließen ausgeführt wird
register_shutdown_function(function() {
echo "Ende der Skriptausführung,Ressourcen freigeben。\n";
});
?>
Viele Ressourcen wie Datenbankverbindungen, Dateigriffe, Cache -Verbindungen usw. Wenn sie nicht rechtzeitig geschlossen sind, kann dies zu verursachen:
Die Zunahme der Serverressourcenverbrauch wirkt sich auf die Leistung aus.
Langlebige Skripte können Speicherlecks erleben.
Außergewöhnliche Situationen wie Ressourcenwettbewerb und Deadlock.
Daher wird empfohlen, die relevanten Ressourcen am Ende des Lebenszyklus des Skripts explizit freizugeben.
Angenommen, Sie verwenden MySQLI für Datenbankvorgänge. Sie können es so entwerfen:
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Schließen Sie die Datenbankverbindung am Ende des Registrierungsskripts
register_shutdown_function(function() use ($mysqli) {
if ($mysqli->ping()) {
$mysqli->close();
echo "Datenbankverbindung geschlossen。\n";
}
});
// Führen Sie einige Fragen aus
$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
?>
In diesem Beispiel registrieren wir eine Rückruffunktion über Register_Shutdown_Function, um sicherzustellen, dass die Datenbankverbindung am Ende des Skripts geschlossen ist und Ressourcenabfälle vermeiden.
In komplexen Skripten können Ausnahmen oder fatale Fehler auftreten. Register_Shutdown_Function kann diese Art von Situation auch erfassen, um die Ressourcenfreigabe und -ausführung sicherzustellen.
<?php
$fp = fopen("log.txt", "a");
// Registrieren Sie eine Schlussfunktion,Lösen Sie den Dateihandle
register_shutdown_function(function() use ($fp) {
if (is_resource($fp)) {
fclose($fp);
echo "Der Dateihandle ist geschlossen。\n";
}
});
// Ausnahmen simulieren
throw new Exception("Skriptausführungsausnahme!");
?>
Selbst wenn das Skript aufgrund einer Ausnahme unterbrochen wird, wird die Schließfunktion weiterhin aufgerufen, um sicherzustellen, dass die Dateiressourcen veröffentlicht werden.
Register_Shutdown_Function ist ein leistungsstarkes Tool zum Ausführen von Rückruffunktionen am Ende der PHP -Skriptausführung.
Es stellt sicher, dass in normalen oder abnormalen Situationen Ressourcen wie Datenbankverbindungen, Dateihandles usw. veröffentlicht werden.
Die Kombination von anonymen Funktionen und Schließungen kann die Ressourcenverwaltungslogik präzise implementiert werden.
Es wird empfohlen, dass alle PHP -Skripte, die externe Ressourcenoperationen betreffen, diesen Mechanismus für das Recycling von Ressourcen verwenden.