In diesem Artikel wird der zugrunde liegende Betriebsmechanismus von PHP ausführlich erläutert, einschließlich der Funktionsweise von PHP-Inhalten, und anhand von Beispielen wird der gesamte Lebenszyklus von PHP vom Start bis zum Stopp erläutert.
Einführung
Wir haben den PHP-bezogenen Prozess nie manuell gestartet, er wird beim Start von Apache ausgeführt; PHP ist über das Modul mod_php5.so mit Apache verbunden (insbesondere SAPI, die Server-Anwendungsprogrammierschnittstelle
verfügt über insgesamt drei Module): Kernel, Zend-Engine und Erweiterungsschicht; PHP-Kernel wird verwendet, um Anfragen, Dateiströme, Fehlerbehandlung und andere damit verbundene Vorgänge zu verarbeiten; Zend-Engine (ZE) wird verwendet, um Quelldateien in Maschinensprache zu konvertieren und sie dann auf einer virtuellen Maschine auszuführen; Die Erweiterungsschicht besteht aus einer Reihe von Funktionen, Bibliotheken und Streams, die PHP zum Ausführen bestimmter Vorgänge verwendet. 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. Zu diesem Zeitpunkt übergibt ZE die Steuerung an die Erweiterung und gibt sie nach der Verarbeitung der spezifischen Aufgabe zurück ;
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.
Es ist nicht so einfach, indas Innenleben der Realität
einzutauchen
.Der obige Prozess ist nur eine vereinfachte Version. Schauen wir uns etwas genauer an, um zu sehen, was sich sonst noch hinter den Kulissen abspielt.
◆Nach dem Start von Apache startet auch der PHP-Interpreter;
◆Der Startvorgang von PHP besteht aus zwei Schritten:
Der erste Schritt besteht darin, einige Umgebungsvariablen zu initialisieren, die während des gesamten SAPI-Lebenszyklus wirksam werden;
Der zweite Schritt besteht darin, einige Variableneinstellungen zu generieren, die nur für die aktuelle Anfrage spezifisch sind.
erste Schritt beim Starten von PHP ist
? Was sind der erste und der zweite Schritt? Machen Sie sich keine Sorgen, wir werden dies als Nächstes ausführlich besprechen. Schauen wir uns zunächst den ersten und wichtigsten Schritt an. Beachten Sie, dass der erste Schritt des Vorgangs erfolgt, bevor Anfragen eingehen.
Nach dem Start von Apache startet auch der PHP-Interpreter;
PHP ruft die MINIT-Methode jeder Erweiterung auf und versetzt diese Erweiterungen dadurch in einen verfügbaren Zustand. Sehen Sie sich an, welche Erweiterungen in der Datei php.ini geöffnet sind. MINIT bedeutet „Modulinitialisierung“. Jedes Modul definiert eine Reihe von Funktionen, Klassenbibliotheken usw. zur Bearbeitung anderer Anforderungen.
Eine typische MINIT-Methode lautet wie folgt:
PHP_MINIT_FUNCTION(extension_name){
/* Funktionen, Klassen usw. initialisieren */
}
PHP startet den zweiten Schritt.
Wenn eine Seitenanforderung auftritt, übergibt die SAPI-Schicht die Kontrolle an die PHP-Schicht. Daher legt PHP die Umgebungsvariablen fest, die zur Beantwortung dieser Anfrage erforderlich sind. Gleichzeitig wird eine Variablentabelle erstellt, in der die während der Ausführung generierten Variablennamen und -werte gespeichert werden.
PHP ruft die RINIT-Methode jedes Moduls auf, bei der es sich um „Anforderungsinitialisierung“ handelt.
Ein klassisches Beispiel ist das RINIT des Session-Moduls, wenn das Session-Modul in php.ini aktiviert ist und der entsprechende Inhalt beim Aufrufder RINIT-Methode
eingelesen wird
als a betrachtet werden. Der Vorbereitungsprozess startet automatisch zwischen Programmausführungen.
Eine typische RINIT-Methode lautet wie folgt:
PHP_RINIT_FUNCTION(extension_name) {
/* Sitzungsvariablen initialisieren, Variablen vorab füllen, globale Variablen neu definieren usw. */
}
Der erste Schritt des Herunterfahrens von PHP
ist derselbe wie das Herunterfahren von PHP und ist ebenfalls in zwei Schritte unterteilt:
Sobald die Seite ausgeführt wird (unabhängig davon, ob sie das Ende der Datei erreicht oder mit der Exit- oder Die-Funktion beendet wird), wird PHP gestartet der Aufräumvorgang. Es ruft nacheinander die RSHUTDOWN-Methode jedes Moduls auf.
RSHUTDOWN wird verwendet, um die Symboltabelle zu löschen, die während der Ausführung des Programms generiert wird, d. h. um die Unset-Funktion für jede Variable aufzurufen.
Eine typische RSHUTDOWN-Methode lautet wie folgt:
PHP_RSHUTDOWN_FUNCTION(extension_name) {
/* Speicherverwaltung durchführen, alle beim letzten PHP-Aufruf verwendeten Variablen zurücksetzen usw. */
}
des zweiten Schritts von PHP Shutdown
sind alle Anfragen verarbeitet und SAPI ist bereit zum Herunterfahren. PHP beginnt mit der Ausführung des zweiten Schritts:
PHP ruft die MSHUTDOWN-Methode jeder Erweiterung auf Speicher freigeben.
Eine typische RSHUTDOWN-Methode lautet wie folgt:
PHP_MSHUTDOWN_FUNCTION(extension_name) {
/* Freie Handler und persistenter Speicher usw. */
}
Auf diese Weise ist der gesamte PHP-Lebenszyklus abgeschlossen. Es ist zu beachten, dass „Starten des ersten Schritts“ und „Schließen des zweiten Schritts“ nur dann ausgeführt werden, wenn keine Anfrage vom Server vorliegt.