Heim >Backend-Entwicklung >PHP-Tutorial >Der Anfang und das Ende einer PHP-Anfrage: MINIT und RINIT, RSHUTDOWN und MSHUTDOWN
Nachdem PHP mit der Ausführung begonnen hat, durchläuft es zwei Hauptphasen:
Die Anfangsphase vor der Verarbeitung der Anfrage
Die Endphase nach der Anfrage
Es gibt zwei Prozesse in der Anfangsphase:
Der erste Prozess ist die Modulinitialisierungsphase (MINIT). Dieser Prozess wird nur einmal während des gesamten SAPI-Lebenszyklus durchgeführt (z. B. während des gesamten Lebenszyklus nach dem Start von Apache oder während des gesamten Lebenszyklus). Ausführungsprozess des Kommandozeilenprogramms).
Der zweite Prozess ist die Modulaktivierungsphase (RINIT), die in der Anforderungsphase stattfindet. Wenn beispielsweise eine Seite über eine URL angefordert wird, wird die Modulaktivierung (RINIT-Anforderungsstart) vor jeder Anforderung durchgeführt . Wenn PHP beispielsweise einige Erweiterungsmodule registriert, wird die MINIT-Funktion aller Module während der MINIT-Phase zurückgerufen. Das Modul kann in dieser Phase einige Initialisierungsarbeiten durchführen, z. B. das Registrieren von Konstanten, das Definieren der vom Modul verwendeten Klassen usw. Das
-Modul kann diese Rückruffunktionen bei der Implementierung über die folgenden Makros implementieren:
PHP_MINIT_FUNCTION(myphpextension) { // 注册常量或者类等初始化操作 return SUCCESS; }
Nachdem die Anforderung eintrifft, initialisiert PHP die grundlegende Umgebung zum Ausführen des Skripts, z. B. das Erstellen einer Ausführungsumgebung , einschließlich Speichern des PHP-Laufs. Die Symboltabelle der Variablennamen und Wertinhalte im Prozess sowie die Symboltabelle aller aktuellen Funktionen, Klassen und anderer Informationen. Dann ruft PHP die RINIT-Funktion aller Module auf. Zu diesem Zeitpunkt kann jedes Modul auch einige verwandte Vorgänge ausführen. Die RINIT-Funktion des Moduls ähnelt der MINIT-Rückruffunktion:
PHP_RINIT_FUNCTION(myphpextension) { // 例如记录请求开始时间 // 随后在请求结束的时候记录结束时间。这样我们就能够记录下处理请求所花费的时间了 return SUCCESS; }
Nach der Anfrage verarbeitet wird, tritt es in die Endphase ein. Im Allgemeinen tritt PHP in die Endphase ein, wenn das Skript bis zum Ende ausgeführt wird oder wenn die Funktion „exit()“ oder „die()“ aufgerufen wird. Entsprechend der Anfangsphase ist auch die Endphase in zwei Phasen unterteilt: Eine besteht darin, das Modul nach Abschluss der Anforderung zu deaktivieren (RSHUTDOWN, entsprechend RINIT), und die andere darin, das Modul zu schließen, wenn der SAPI-Lebenszyklus endet ( Der Webserver wird beendet oder das Befehlszeilenskript wird ausgeführt und beendet (MSHUTDOWN, entsprechend MINIT).
PHP_RSHUTDOWN_FUNCTION(myphpextension) { // 例如记录请求结束时间,并把相应的信息写入到日至文件中。 return SUCCESS; }