Bei der PHP -Entwicklung ist es sehr wichtig, den Vorgang zu bewältigen, wenn ein Programm geschlossen ist, insbesondere die Ressourcenfreigabe und die Datenspeicherung. Die beiden Funktionen Session_register_Shutdown () und register_shutdown_function () werden häufig erwähnt, aber ihre Funktionen, Verwendung und anwendbare Szenarien sind unterschiedlich. In diesem Artikel werden ihre Unterschiede, Verbindungen und Anwendungen im Detail eingeführt.
Dies ist eine gemeinsame Funktion, die von PHP bereitgestellt wird und zur Registrierung einer Rückruffunktion verwendet wird, die nach der Ausführung des PHP -Skripts automatisch aufgerufen wird. Sie können mehrere Rückrufe registrieren, und die Antragsreihenfolge bestimmt die Auftragsreihenfolge.
Beispielcode:
<?php
register_shutdown_function(function() {
echo "Das Skript wird ausgeführt,Führen Sie einen Aufräumvorgang durch。";
});
?>
Wenn das PHP -Skript ausgeführt wird, wird diese registrierte Rückruffunktion ausgeführt, unabhängig davon, ob es normal endet oder ein tödlicher Fehler auftritt.
Dies ist eine Funktion, die speziell für das Sitzungsmodul verwendet wird. Es ruft Register_Shutdown_Function () in intern und automatisch die Funktion zum Herunterfahren der Sitzung von Sitzungen auf, um sicherzustellen, dass PHP am Ende des Skripts Sitzungsdaten korrekt schließt und speichert.
Nach PHP 5.4 wurde diese Funktion als verworfen markiert und wird nicht empfohlen, sie weiter zu verwenden.
Beispielcode:
<?php
session_start();
session_register_shutdown();
$_SESSION['name'] = 'Zhang San';
?>
Nach dem Aufrufen führt das Sitzungsmodul am Ende des Skripts automatisch einen Schreibvorgang durch.
Aspekt | Session_register_Shutdown () | Register_Shutdown_Function () |
---|---|---|
Funktionelle Positionierung | Speziell verwendet, um automatisch registrierte Sitzungsfunktionen zu registrieren | Allgemeine Rückruffunktionen registrieren, die aufgerufen werden, wenn ein Skript geschlossen ist |
Parameter | Die Registrierung wird automatisch intern ohne Parameter abgeschlossen | Die Rückruffunktion muss übergeben werden, mehrere Parameter können übergeben werden |
Gebrauchsbereich | Nur Sitzungsmodul | Willkürlicher Abruf für Skripte |
Kompatibilität | PHP 5.4 wird aufgegeben und nicht empfohlen | Häufige Unterstützung moderner PHP -Versionen |
Handlungszeit | Wenn das Skript geschlossen ist, stellen Sie sicher, dass Sitzungsdaten geschrieben werden. | Aufrufen von benutzerdefinierten Rückruffunktionen, wenn das Skript geschlossen ist |
Session_register_Shutdown () ist tatsächlich eine Kapselung von Register_Shutdown_Function () , das speziell verwendet wird, um sicherzustellen, dass Sitzungsdaten am Ende des Skripts sicher geschrieben werden können. Beide werden während der PHP -Ausführungsstromablaufphase ausgelöst und gehören zum Mechanismus des Skript -Shutdown -Hooks.
Einfach sagen:
Session_register_Shutdown () = Register_Shutdown_Function () + Sitzungslogik
Verwenden Sie Session_register_Shutdown (), damit Entwickler Sitzungsvorgänge manuell verwalten können
Protokollierung, Reinigungsressourcen, Schließen von Datenbankverbindungen und andere Vorgänge sind am Ende des Skripts erforderlich.
Nach dem Umgang mit Ausnahmen oder tödlichen Fehlern durchgeführt.
Passen Sie jede Funktion an, die ausgeführt werden muss, wenn das Skript geschlossen ist.
Beispiel:
<?php
register_shutdown_function(function() {
error_log("Ende der Skriptausführung,Schreiben Sie an Protokoll");
});
?>
Nur für die automatische Registrierungssitzung der alten Versionen von PHP (5.3 und zuvor) geeignet.
Es wird nicht empfohlen, die neue Version zu verwenden. Es wird empfohlen, Session_Write_Close () auf Call zu rufen oder sich auf PHP zu verlassen, um automatisch zu schreiben.
Funktion | Empfohlen | Hauptfunktionen | Empfehlungen für den Gebrauch |
---|---|---|---|
Session_register_Shutdown () | Nicht empfohlen | Registrieren Sie automatisch Sitzungsschreiben Sie einen Rückruf schreiben | Nur zur Kompatibilität mit alten Versionen verwendet, die von modernen Projekten veraltet sind |
Register_Shutdown_Function () | empfehlen | Registrieren Sie jedes Skript, um die Rückruffunktion zu schließen | Breiter Anwendungsbereich, flexibel und stabil |
In der modernen PHP -Entwicklung wird empfohlen, Session_write_close () direkt bei der Behandlung von Sitzungen zu verwenden. Für andere Reinigungsarbeiten während des Schlusses wird empfohlen, Register_Shutdown_Function () zu gewährleisten, um die Codekompatibilität und Flexibilität zu gewährleisten.
Wenn der Code beispielsweise URLs umfasst:
<?php
echo "Besuchen Sie die Website: http://example.com/path";
?>
Es sollte ersetzt werden durch: