Detaillierte Erklärung des PHP-Lebenszyklus (Bild)
Dieser Artikel bietet Ihnen eine detaillierte Erklärung (Bild) des PHP-Lebenszyklus. Ich hoffe, dass er für Freunde in Not hilfreich ist.
Der erste Prozess ist die Modulinitialisierungsphase (MINIT), die während des gesamten SAPI-Lebenszyklus auftritt (z. B. dem gesamten Lebenszyklus nach dem Start von Apache oder dem gesamten Ausführungsprozess). des Kommandozeilenprogramms), wird dieser Vorgang nur einmal durchgeführt. Der zweite Prozess ist die Modulaktivierungsphase (RINIT), die in der Anforderungsphase stattfindet. Wenn beispielsweise eine Seite über eine URL angefordert wird, wird die Modulaktivierung vor jeder Anforderung durchgeführt (RINIT-Anforderung beginnt)
Nachdem die Anfrage eintrifft, initialisiert PHP die grundlegende Umgebung zum Ausführen des Skripts, z. B. das Erstellen einer Ausführungsumgebung, einschließlich einer Symboltabelle, die die Variablennamen und Werteinhalte während der Ausführung von PHP speichert, sowie einer Symboltabelle mit allen aktuellen Funktionen, Klassen und anderen Informationen. Dann ruft PHP die RINIT-Funktion aller Module auf. Zu diesem Zeitpunkt kann jedes Modul auch einige verwandte Vorgänge ausführen
Im Allgemeinen wird das Skript bis zum Ende oder durch Aufrufen des Exits ausgeführt. ) oder die()-Funktion, PHP wird alle in die Endphase eintreten. Entsprechend der Startphase 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). 🎜>
Start – Antrag zum Starten – Antrag zum Schließen – Ende
Startup
Vor dem Aufruf der Modulinitialisierung jedes Moduls findet ein Initialisierungsprozess statt, der Folgendes umfasst:
Eine Reihe globaler Variablen initialisieren
Eine Reihe von Konstanten initialisieren
Zend-Engine und Kernkomponenten initialisieren
Die Initialisierungsvorgänge hier umfassen die Initialisierung der Speicherverwaltung und die Initialisierung globaler Funktionszeiger (wie zend_printf usw.), lexikalische Analyse und Syntaxanalyse von PHP-Quelldateien. Weisen Sie den vom Zwischencode ausgeführten Funktionszeiger zu, initialisieren Sie mehrere HashTables (z. B. Funktionstabellen, Konstantentabellen usw.) und bereiten Sie sich auf INI vor Dateianalyse, Vorbereitung für die PHP-Quelldateianalyse, Registrierung integrierter Funktionen (z. B. strlen, define usw.), Registrierung von Standardkonstanten (z. B. E_ALL, TRUE, NULL usw.), Registrierung globaler GLOBALS-Variablen usw.
php.ini analysieren
Initialisierung der globalen Betriebsfunktion
Statisch erstellte Module initialisieren und Gemeinsam genutzte Module (MINIT)
, um diese Module in der Liste der registrierten Module (module_registry) zu registrieren. Wenn das registrierte Modul bereits registriert wurde, meldet PHP den Fehler „Modul XXX bereits geladen“. 1. Registrieren Sie die in jedem Modul enthaltenen Funktionen in der Funktionstabelle (CG(function_table)). Wenn die Funktion nicht hinzugefügt werden kann, wird die Meldung „Funktionen konnten nicht registriert werden, Laden nicht möglich“ gemeldet.
Nach integrierten Modulen und Zusatzmodulen besteht der nächste Schritt darin, Erweiterungen zu registrieren, die über gemeinsam genutzte Objekte (z. B. DLLs) und php.ini-Dateien flexibel konfiguriert werden. Nachdem alle Module registriert sind, führt PHP sofort den Modulinitialisierungsvorgang durch (zend_startup_modules). Der gesamte Prozess besteht darin, jedes Modul der Reihe nach zu durchlaufen und die Modulinitialisierungsfunktion jedes Moduls aufzurufen. Dies ist im zuvor in diesem Abschnitt erwähnten Makro PHP_MINIT_FUNCTION enthalten.
PHP Zusätzlich zu einigen der oben genannten Variablen verfügt die Ausführungsumgebung auch über Fehlerbehandlung, Ausnahmebehandlung usw., die alle hier initialisiert werden. Die über php.ini konfigurierten zend_extensions werden ebenfalls durchlaufen und die Aktivierungsfunktion wird hier aufgerufen.
SAPI aktivieren
Umgebungsinitialisierung
Die Umgebungsinitialisierung bezieht sich hier auf die Initialisierung einiger Umgebungsvariablen, die im Benutzerbereich verwendet werden müssen. Die Umgebung umfasst hier die Serverumgebung, die Anforderungsdatenumgebung usw. Die tatsächlichen Variablen, die wir verwenden, sind P OST, _GET, COOKIE, _SERVER, ENV, _FILES.
Initialisierung der Modulanforderung
Ausführen
DEAKTIVIERUNG
Der Prozess des PHP-Schließens einer Anfrage besteht aus mehreren Schließvorgängen. Dieser Satz ist in der Funktion php_request_shutdown vorhanden. Diese Sammlung umfasst Folgendes:
Rufen Sie alle über register_shutdown_function() registrierten Funktionen auf. Diese beim Herunterfahren aufgerufenen Funktionen wurden im Benutzerbereich hinzugefügt. Als einfaches Beispiel können wir eine einheitliche Funktion aufrufen, wenn ein Skriptfehler auftritt, um dem Benutzer eine benutzerfreundlichere Seite zu bieten. Dies ähnelt in gewisser Weise der 404-Seite im Web.
Führen Sie alle verfügbaren __destruct-Funktionen aus. Der Destruktor umfasst hier den Destruktor aller Objekte im Objektpool (EG (objects_store)) und den Destruktor jedes Elements in EG (symbol_table).
Alle Ausgaben löschen. Dies ist auch ein Prozess der Ausgabe einer Zeichenfolge, aber diese Zeichenfolge kann bestimmten Spezifikationen entsprechen.
Durchläuft die Anforderung zum Herunterfahren des Moduls. Dies ist, was wir im Bild sehen 🎜>Zerstören Sie die Variablen der globalen Variablentabelle (PG(http_globals)).
Schließen Sie den lexikalischen Analysator, den Syntaxanalysator und den Zwischencode-Executor über die Funktion „post-RSHUTDOWN“. .
Schließen Sie den Inhalt von SG (sapi_headers), SG (request_info) usw.
Schließen Sie den Stream-Filter
Setzen Sie die maximale Ausführungszeit zurück 🎜>
Ende
flush
sapi_flush löscht den letzten Inhalt. Dies entspricht der Flush-Funktion im CLI-Modus. zend_shutdown fährt die Zend-Engine herunter.Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des PHP-Lebenszyklus (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...
