PHP-Lebenszyklus

步履不停
步履不停Original
2019-06-25 17:32:005722Durchsuche

PHP-Lebenszyklus

1. PHP-Betriebsmodus:

Die beiden Betriebsmodi von PHP sind WEB-Modus und CLI-Modus. Unabhängig vom Modus funktioniert PHP gleich und läuft als SAPI.

1. Wenn wir den PHP-Befehl in das Terminal eingeben, wird die CLI verwendet.

Es ist wie ein Webserver, der PHP zum Abschließen der Anfrage unterstützt. Nachdem die Anfrage abgeschlossen ist, wird die Kontrolle an das Terminal zurückgegeben.

2. Wenn Sie Apache oder einen anderen Webserver als Host verwenden, unterstützt PHP die Vervollständigung der Anfrage. Im Allgemeinen:

Multiprozess (normalerweise als Apache-Modul kompiliert, um PHP-Anfragen zu verarbeiten)

Multithread-Modus

Kurzer Ausführungsprozess:

1 . PHP wird ausgeführt, wenn Apache gestartet wird. PHP ist über das Modul mod_php5.so verbunden Gesamt: Kernel, Zend-Engine und Erweiterungsschicht;

4. Der PHP-Kernel wird zum Verarbeiten von Anfragen, Dateiströmen, Fehlerbehandlung und anderen verwandten Vorgängen verwendet.

5 Konvertieren Sie es in Maschinensprache und führen Sie es dann auf einer virtuellen Maschine aus.
6. Die Erweiterungsschicht besteht aus einer Reihe von Funktionen, Klassenbibliotheken und Streams, die PHP verwendet, um bestimmte Operationen auszuführen. Beispielsweise benötigen wir die MySQL-Erweiterung, um eine Verbindung zur MySQL-Datenbank herzustellen. Wenn ZE das Programm ausführt, muss es möglicherweise eine Verbindung zu mehreren Erweiterungen herstellen nach der Verarbeitung der spezifischen Aufgabe;
8. Schließlich gibt ZE die Ergebnisse der Programmausführung an den PHP-Kernel zurück, der die Ergebnisse dann an die SAPI-Schicht übermittelt und sie schließlich an den Browser ausgibt.

2. Mehrere Phasen der Ausführung von PHP:

SAPI führt PHP durch die folgenden Phasen aus:

1. Modulinitialisierungsphase (Module init):

Das heißt, jeder Aufruf Die Methode in PHP_MINIT_FUNCTION im Quellcode der Erweiterung initialisiert das Modul, gilt für einige vom Modul benötigte Variablen, weist Speicher zu usw.

2. Anforderungsinitialisierungsphase (Request init):

Das heißt, nach Erhalt der Clientanforderung wird die Methode in jeder erweiterten PHP_RINIT_FUNCTION aufgerufen, um die Ausführungsumgebung des PHP-Skripts zu initialisieren.
3. PHP-Skript ausführen
4. Herunterfahren anfordern:
Zu diesem Zeitpunkt wird die PHP_RSHUTDOWN_FUNCTION-Methode jeder Erweiterung aufgerufen, um die Anforderungsseite zu bereinigen, und ZE beginnt, Variablen und Speicher zu recyceln.
5. Modul herunterfahren:
Wenn der Webserver beendet wird oder das Befehlszeilenskript ausgeführt wird und beendet wird, wird die Methode PHP_MSHUTDOWN_FUNCTION im Quellcode der Erweiterung aufgerufen

3 Umstände.

1. Einzelprozess-SAPI-Lebenszyklus. (CGI)

CLI/CGI-Modus PHP gehört zum Einzelprozess-SAPI-Modus. Diese Art von Anfrage wird nach einmaliger Bearbeitung der Anfrage geschlossen. Das heißt, jede Anfrage wiederholt die folgenden Schritte: Start – Start der Anfrage – Schließen der Anfrage – Ende. Sie sehen, dass die Initialisierung der Erweiterung viele Ressourcen verbraucht.

2. Multiprozess-SAPI-Lebenszyklus. (MPMs Perfork-Methode)

Normalerweise wird PHP in ein Apache-Modul kompiliert, um PHP-Anfragen zu verarbeiten (mod_php). Apache übernimmt im Allgemeinen den Multiprozessmodus. Nach dem Start von Apache werden mehrere untergeordnete Prozesse ausgegeben (Apache kann die Anzahl der Prozesse angeben, mit denen die Ausgabe gestartet werden soll). Der Speicherplatz jedes Prozesses ist unabhängig und jeder untergeordnete Prozess durchläuft die Start- und Endphase, sobald er gefüllt ist.

3. Multithread-SAPI-Lebenszyklus. (Einzelner Prozess im FastCGI- oder MPM-Arbeitsmodus)

Der Multi-Thread-Modus ähnelt einem Prozess im Multi-Prozess. In diesem Modus wird nur ein Serverprozess ausgeführt, es werden jedoch viele Threads gleichzeitig ausgeführt. Dies kann den Ressourcenaufwand verringern und die Kosten senken Modulinitialisierung und Modulabschaltung müssen nur einmal ausgeführt werden, und einige globale Variablen müssen nur einmal initialisiert werden. Aufgrund der einzigartigen Eigenschaften von Threads ist es möglich, einige Daten bequem zwischen Anforderungen auszutauschen.

PHP-Lebenszyklus

Weitere technische Artikel zum Thema PHP finden Sie in der Spalte PHP-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonPHP-Lebenszyklus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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