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. Allgemein:
Multiprozess (normalerweise als Apache-Modul kompiliert, um PHP-Anfragen zu verarbeiten)
Multi-Thread-Modus
Kurzer Ausführungsprozess:
1. PHP wird beim Start von Apache ausgeführt
2 PHP wird über das Modul mod_php5.so (insbesondere) mit Apache verbunden als SAPI (Server Application Programming Interface));
3. PHP verfügt über insgesamt drei Module: Kernel, Zend-Engine und Erweiterungsschicht; Dateiströme, Fehlerbehandlung und andere verwandte Vorgänge;
5. Zend Engine (ZE) wird verwendet, um Quelldateien in Maschinensprache zu konvertieren und sie dann auf einer virtuellen Maschine auszuführen Ebene ist eine Reihe von Funktionen, Bibliotheken und Streams, die PHP verwendet, um bestimmte Vorgänge auszuführen. Beispielsweise benötigen wir die MySQL-Erweiterung, um eine Verbindung zur MySQL-Datenbank herzustellen.
7 Wenn ZE das Programm ausführt, muss es möglicherweise eine Verbindung zu mehreren Erweiterungen herstellen und geben Sie es nach der Verarbeitung der spezifischen Aufgabe zurück.
8 Schließlich gibt ZE die Ergebnisse der Programmausführung an den PHP-Kernel zurück, der die Ergebnisse dann an die SAPI-Schicht überträgt und sie schließlich an den Browser ausgibt.
Mehrere Phasen der Ausführung von PHP:
SAPI, die PHP ausführt, durchläuft die folgenden Phasen: 1 (Modulinit):
Das heißt, die Methode in PHP_MINIT_FUNCTION in jedem Erweiterungsquellcode aufzurufen, um das Modul zu initialisieren, einige vom Modul benötigte Variablen anzuwenden, Speicher zuzuweisen usw.
2. Anforderungsinitialisierungsphase (Request init):
Nach dem Empfang der Clientanforderung wird die Methode in PHP_RINIT_FUNCTION jeder Erweiterung aufgerufen, um die Ausführungsumgebung des PHP-Skripts zu initialisieren.
3. Führen Sie das PHP-Skript aus
4. Herunterfahren der Anforderung:
Zu diesem Zeitpunkt wird die Methode PHP_RSHUTDOWN_FUNCTION jeder Erweiterung aufgerufen, um die Anforderungsseite zu bereinigen, und ZE wird gestartet um 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
SAPI-Lebenszyklus unter verschiedenen Umständen
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 – Ende 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 Modul von Apache kompiliert, um PHP-Anfragen zu verarbeiten (mod_php). Apache übernimmt im Allgemeinen den Multiprozessmodus. Nachdem Apache gestartet wurde, werden mehrere untergeordnete Prozesse ausgegeben (Apache kann die Anzahl der Prozesse angeben, die mit der Ausgabe beginnen sollen). 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. (Einzelprozess 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 gleichzeitig ausgeführt Aufgrund der einzigartigen Eigenschaften von Threads ist es möglich, den Ressourcenaufwand für die Modulinitialisierung und das Herunterfahren des Moduls nur einmal zu verringern.
Verwandte Empfehlungen:
PHP-Video-Tutorial://m.sbmmt.com/course/list/29/ type/2.html
Das obige ist der detaillierte Inhalt vonEinführung in den PHP-Lebenszyklus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!