Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erklärung des PHP-Lebenszyklus (Bild)

Detaillierte Erklärung des PHP-Lebenszyklus (Bild)

Oct 23, 2018 pm 05:03 PM

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
    Detaillierte Erklärung des PHP-Lebenszyklus (Bild)
    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.

Nach der Verarbeitung des dateibezogenen Inhalts ruft PHP php_request_startup auf, um den Anforderungsinitialisierungsvorgang durchzuführen. Der Anforderungsinitialisierungsvorgang erledigt neben dem Aufruf der Anforderungsinitialisierungsfunktion jedes in der Abbildung gezeigten Moduls auch viele andere Aufgaben. Der Hauptinhalt lautet wie folgt:

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

Endlich ist es Zeit zu beenden

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

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.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

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.

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

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 ...

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

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

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

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 � ...

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

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? Wie debugge ich den CLI -Modus in PhpStorm? Apr 01, 2025 pm 02:57 PM

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 ...

See all articles