Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
Ich verwende LAMP oder LNMP schon seit langem. Wie funktionieren Lampen oder wie werden sie angeschlossen? Normalerweise schreibe ich nur Programme und denke selten über deren Funktionsprinzipien nach: In diesem Artikel erfahren Sie hauptsächlich die unterste Ebene davon PHP Detaillierte Erklärung des Prinzips und Beispiele, ich hoffe, es kann jedem helfen.
Das zugrunde liegende Arbeitsprinzip von PHP
Abbildung 1 PHP-Struktur
Wie aus der Abbildung ersichtlich ist, handelt es sich bei PHP um ein 4-Schichten-System Von unten nach oben
①Zend Engine
Zend ist vollständig in reinem C implementiert und der Kernbestandteil von PHP. Es übersetzt PHP-Code (lexikalische, Syntaxanalyse und eine Reihe von Kompilierungsvorgängen) in eine ausführbare Datei Opcode-Verarbeitung und -Implementierung Entsprechende Verarbeitungsmethoden, die Implementierung grundlegender Datenstrukturen (wie Hashtable, oo), die Speicherzuweisung und -verwaltung sowie die Bereitstellung entsprechender API-Methoden für externe Aufrufe sind der Kern von allem. Alle Peripheriefunktionen werden rund um Zend implementiert.
②Erweiterungen
Erweiterungen rund um die Zend-Engine bieten verschiedene grundlegende Dienste auf Komponentenbasis. Unsere gemeinsamen verschiedenen integrierten Funktionen (z. B. Array-Serien), Standardbibliotheken usw. sind alle durch Erweiterungen Um dies zu erreichen, können Benutzer bei Bedarf auch eigene Erweiterungen implementieren, um Funktionserweiterungen, Leistungsoptimierungen und andere Zwecke zu erreichen (z. B. sind die PHP-Mittelschicht und die Rich-Text-Analyse, die derzeit von Tieba verwendet werden, typische Anwendungen von Erweiterungen).
③Sapi
Der vollständige Name von Sapi ist Server Application Programming Interface. Dies ist die Server-Anwendungsprogrammierschnittstelle, die es PHP ermöglicht, über eine Reihe von Hook-Funktionen mit Peripheriedaten zu interagieren Elegantes und erfolgreiches Design entkoppelt und isoliert PHP selbst erfolgreich von Anwendungen der oberen Ebene durch SAPI. PHP kann nicht mehr berücksichtigen, wie es mit verschiedenen Anwendungen kompatibel ist, und die Anwendung selbst kann auch unterschiedliche Verarbeitungsmethoden entsprechend ihren eigenen Eigenschaften implementieren. Wir werden die Anwendung der oberen Ebene
④ später im Sapi-Kapitel vorstellen
Dies ist das PHP-Programm, das wir normalerweise schreiben. Wir können verschiedene Anwendungsmodi durch verschiedene Sapi-Methoden erhalten, z. B. durch die Implementierung von Web Webserver Anwenden, als Skript über die Befehlszeile ausführen usw.
Architektonische Ideen:
Das Modell Engine (Zend) + Komponente (ext) reduziert die interne Kopplung
Die mittlere Schicht (Sapi) isoliert den Webserver und PHP
Wenn PHP ein Auto ist, dann
Das Framework des Autos ist PHP selbst
Zend ist der Motor des Autos (Motor)
Das Verschiedene Komponenten unten Ext Sie sind die Räder eines Autos
Sapi kann als Straße betrachtet werden, und Autos können auf verschiedenen Arten von Straßen fahren
Und die Ausführung eines PHP-Programms bedeutet das Auto läuft auf der Straße.
Deshalb benötigen wir: einen Motor mit hervorragender Leistung + geeignete Räder + korrekte Landebahn
Die Beziehung zwischen Apache und PHP
Apache analysiert PHP durch viele Module. Dies geschieht mithilfe von PHP Modul drin.
Um PHP endlich in das Apache-System zu integrieren, müssen Sie einige notwendige Einstellungen für Apache vornehmen. Hier nehmen wir zur Erläuterung den mod_php5 SAPI-Betriebsmodus von PHP. Das Konzept von SAPI werden wir später ausführlich erläutern.
Angenommen, dass die von uns installierten Versionen Apache2 und PHP5 sind, dann müssen Sie die Hauptkonfigurationsdatei von Apache http.conf bearbeiten und die folgenden Zeilen hinzufügen:
In Unix/Linux-Umgebung:
LoadModule php5_module module/mod_php5.so
AddType application/x-httpd-php .php
Hinweis: module/mod_php5.so ist mod_php5.so in der X-Systemumgebung Speicherort, an dem die Datei installiert ist.
In Windows-Umgebung:
LoadModule php5_module d:/php/php5apache2.dll
AddType application/x-httpd-php .php
Hinweis: Unter anderem ist d:/php/php5apache2.dll der Installationsort der Datei php5apache2.dll in der Windows-Umgebung.
Diese beiden Konfigurationen teilen dem Apache-Server mit, dass alle künftig empfangenen URL-Benutzeranfragen mit PHP als Suffix das Modul php5_module (mod_php5.so/php5apache2.dll) zur Verarbeitung aufrufen müssen.
Apache-Lebenszyklus
Apach-Anfrageverarbeitungsprozess
Detaillierte Erklärung des Apache-Anfrageverarbeitungszyklus
Was werden in den 11 Phasen des Apache-Anforderungsverarbeitungszyklus durchgeführt?
1. Post-Read-Request-Phase
Im normalen Anforderungsverarbeitungsprozess ist dies die dritte Phase, in der das Modul eingefügt werden kann hakt eine Bühne. Diese Phase kann für Module genutzt werden, die sehr früh mit der Bearbeitung von Anfragen beginnen möchten.
2. URI-Übersetzungsphase
Die Hauptaufgabe von Apache in dieser Phase besteht darin, die angeforderte URL dem lokalen Dateisystem zuzuordnen. Module können in dieser Phase Hooks einfügen, um ihre eigene Mapping-Logik auszuführen. mod_alias nutzt diese Phase zum Arbeiten.
3. Header-Parsing-Phase
Apaches Hauptarbeit in dieser Phase: Überprüfen des Headers der Anfrage. Da das Modul die Aufgabe übernehmen kann, Anforderungsheader an jedem Punkt des Anforderungsverarbeitungsablaufs zu überprüfen, wird dieser Hook selten verwendet. mod_setenvif nutzt diese Phase zum Arbeiten.
4. Zugangskontrollphase
Apaches Hauptaufgabe in dieser Phase: Überprüfen, ob der Zugriff auf die angeforderte Ressource gemäß der Konfigurationsdatei erlaubt ist. Die Standardlogik von Apache implementiert Zulassungs- und Ablehnungsanweisungen. mod_authz_host nutzt diese Phase, um zu funktionieren.
5. Authentifizierungsphase
Apaches Hauptaufgabe in dieser Phase: Benutzer gemäß der in der Konfigurationsdatei festgelegten Richtlinie authentifizieren und den Benutzernamensbereich festlegen. Module können in dieser Phase Hooks einfügen, um eine Authentifizierungsmethode zu implementieren.
6. Autorisierungsphase
Die Hauptaufgabe von Apache in dieser Phase besteht darin, zu prüfen, ob authentifizierte Benutzer den angeforderten Vorgang basierend auf der Konfigurationsdatei ausführen dürfen. Das Modul kann in dieser Phase Hooks einfügen, um eine Methode zur Benutzerrechteverwaltung zu implementieren.
7. Phase der MIME-Typprüfung
Apaches Hauptaufgabe in dieser Phase: Bestimmen der zu verwendenden Inhaltsverarbeitungsfunktion basierend auf den relevanten Regeln des MIME-Typs der angeforderten Ressource. Die Standardmodule mod_negotiation und mod_mime implementieren diesen Hook.
8. FixUp-Phase
Dies ist eine allgemeine Phase, die es dem Modul ermöglicht, alle erforderlichen Verarbeitungen vor dem Inhaltsgenerator auszuführen. Ähnlich wie Post_Read_Request ist dies ein Hook, der beliebige Informationen erfassen kann und auch der am häufigsten verwendete Hook ist.
9. Antwortphase
Apaches Hauptaufgabe in dieser Phase besteht darin, an den Kunden zurückgegebene Inhalte zu generieren und für das Senden einer angemessenen Antwort an den Kunden verantwortlich zu sein. Diese Phase ist der Kernbestandteil des gesamten Prozesses.
10. Protokollierungsphase
Apaches Hauptaufgabe in dieser Phase: Aufzeichnen von Transaktionen, nachdem die Antwort an den Client gesendet wurde. Module können die Standardprotokollierung von Apache ändern oder ersetzen.
11. CleanUp-Phase
Apaches Hauptaufgabe in dieser Phase: Bereinigen der nach Abschluss dieser Anforderungstransaktion verbleibenden Umgebung, z. B. die Verarbeitung von Dateien und Verzeichnissen oder das Schließen von Sockets, usw. Dies ist die letzte Phase einer Anforderungsverarbeitung durch Apache.
LAMP-Architektur:
Vier Schichten von unten nach oben:
①liunx gehört zur untersten Schicht des Betriebssystems
②Apache-Server, der zum Sekundärserver gehört, kommuniziert mit Linux und PHP
③php: Er gehört zur serverseitigen Programmiersprache und ist über das Modul php_module mit Apache verknüpft
Android-Systemarchitekturdiagramm
Vergleichen Sie das Architekturdiagramm von Lampe und Android. Es scheint der Lampenarchitektur etwas ähnlich zu sein, aber es fühlt sich ein wenig ähnlich an . Vielen Dank
Von oben nach unten:
Android-Architektur——————Erklärung————LAMP-Architektur
1 . Anwendungsprogramm – Spezifische Anwendung – Webanwendung WEB-Server
⒋Linux-Kernel: —Betriebssystem —-L
in der Lampenarchitektur verwendet seit langem LAMP oder LNMP. Wie funktionieren Lampen also oder wie sind sie verbunden? Normalerweise schreibe ich nur Programme und denke selten über die Arbeitsprinzipien zwischen ihnen nach:
Das zugrunde liegende Arbeitsprinzip von PHP
Abbildung 1 PHP-Struktur
Wie Aus dem Bild ist ersichtlich, dass PHP von unten nach oben ein 4-Schichten-System ist
①Zend-Engine
Zend ist in reinem C implementiert und der Kernbestandteil der PHP-Codeübersetzung (a Eine Reihe von Kompilierungsvorgängen (z. B. lexikalische und syntaktische Analyse) verarbeitet ausführbare Opcodes und implementiert entsprechende Verarbeitungsmethoden, implementiert grundlegende Datenstrukturen (z. B. Hashtable, oo), Speicherzuweisung und -verwaltung und stellt entsprechende API-Methoden bereit Der Kern von allem und alle peripheren Funktionen sind rund um Zend implementiert.
②Erweiterungen
Erweiterungen rund um die Zend-Engine bieten verschiedene grundlegende Dienste auf Komponentenbasis. Unsere gemeinsamen verschiedenen integrierten Funktionen (z. B. Array-Serien), Standardbibliotheken usw. sind alle durch Erweiterungen Um dies zu erreichen, können Benutzer bei Bedarf auch eigene Erweiterungen implementieren, um Funktionserweiterungen, Leistungsoptimierungen und andere Zwecke zu erreichen (z. B. sind die PHP-Mittelschicht und die Rich-Text-Analyse, die derzeit von Tieba verwendet werden, typische Anwendungen von Erweiterungen).
③Sapi
Der vollständige Name von Sapi ist Server Application Programming Interface. Dies ist die Server-Anwendungsprogrammierschnittstelle, die es PHP ermöglicht, über eine Reihe von Hook-Funktionen mit Peripheriedaten zu interagieren Elegantes und erfolgreiches Design entkoppelt und isoliert PHP selbst erfolgreich von Anwendungen der oberen Ebene durch SAPI. PHP kann nicht mehr berücksichtigen, wie es mit verschiedenen Anwendungen kompatibel ist, und die Anwendung selbst kann auch unterschiedliche Verarbeitungsmethoden entsprechend ihren eigenen Eigenschaften implementieren. Wir werden die Anwendung der oberen Ebene
④ später im Sapi-Kapitel vorstellen
Dies ist das PHP-Programm, das wir normalerweise schreiben. Wir können verschiedene Anwendungsmodi durch verschiedene Sapi-Methoden erhalten, z. B. durch die Implementierung von Web Webserver Anwenden, als Skript über die Befehlszeile ausführen usw.
Architektonische Ideen:
Das Modell Engine (Zend) + Komponente (ext) reduziert die interne Kopplung
Die mittlere Schicht (Sapi) isoliert den Webserver und PHP
Wenn PHP ein Auto ist, dannDas Framework des Autos ist PHP selbst
Zend ist der Motor des Autos (Motor)
Die verschiedenen Komponenten unter Ext sind die Räder des Autos
Sapi kann als Straßen betrachtet werden, Autos können auf verschiedenen Arten von Straßen fahren
Und die Ausführung eines PHP-Programms bedeutet, dass das Auto auf der Straße fährt.
Deshalb benötigen wir: einen Motor mit hervorragender Leistung + geeignete Räder + korrekte Landebahn
Die Beziehung zwischen Apache und PHP
Apache analysiert PHP durch viele Module. Dies geschieht mithilfe von PHP Modul drin.
Um PHP endlich in das Apache-System zu integrieren, müssen Sie einige notwendige Einstellungen für Apache vornehmen. Hier nehmen wir zur Erläuterung den SAPI-Betriebsmodus mod_php5 von PHP als Beispiel. Das Konzept von SAPI werden wir später ausführlich erläutern.
Angenommen, dass die von uns installierten Versionen Apache2 und PHP5 sind, dann müssen Sie die Hauptkonfigurationsdatei von Apache http.conf bearbeiten und die folgenden Zeilen hinzufügen:
In Unix/Linux-Umgebung:
LoadModule php5_module module/mod_php5.so
AddType application/x-httpd-php .php
Hinweis: module/mod_php5.so ist mod_php5.so in der X-Systemumgebung Speicherort, an dem die Datei installiert ist.
In Windows-Umgebung:
LoadModule php5_module d:/php/php5apache2.dll
AddType application/x-httpd-php .php
Hinweis: Unter anderem ist d:/php/php5apache2.dll der Installationsort der Datei php5apache2.dll in der Windows-Umgebung.
Diese beiden Konfigurationen teilen dem Apache-Server mit, dass alle künftig empfangenen URL-Benutzeranfragen mit PHP als Suffix das Modul php5_module (mod_php5.so/php5apache2.dll) zur Verarbeitung aufrufen müssen.
Apache-Lebenszyklus
Apach-Anfrageverarbeitungsprozess
Detaillierte Erklärung des Apache-Anfrageverarbeitungszyklus
Was werden in den 11 Phasen des Apache-Anforderungsverarbeitungszyklus durchgeführt?
1. Post-Read-Request-Phase
Im normalen Anforderungsverarbeitungsprozess ist dies die dritte Phase, in der das Modul eingefügt werden kann hakt eine Bühne. Diese Phase kann für Module genutzt werden, die sehr früh mit der Bearbeitung von Anfragen beginnen möchten.
2. URI-Übersetzungsphase
Die Hauptaufgabe von Apache in dieser Phase besteht darin, die angeforderte URL dem lokalen Dateisystem zuzuordnen. Module können in dieser Phase Hooks einfügen, um ihre eigene Mapping-Logik auszuführen. mod_alias nutzt diese Phase zum Arbeiten.
3. Header-Parsing-Phase
Apaches Hauptarbeit in dieser Phase: Überprüfen des Headers der Anfrage. Da das Modul die Aufgabe übernehmen kann, Anforderungsheader an jedem Punkt des Anforderungsverarbeitungsablaufs zu überprüfen, wird dieser Hook selten verwendet. mod_setenvif nutzt diese Phase zum Arbeiten.
4. Zugriffskontrollphase
Apaches Hauptarbeit in dieser Phase: Überprüfen, ob der Zugriff auf die angeforderte Ressource gemäß der Konfigurationsdatei erlaubt ist. Die Standardlogik von Apache implementiert Zulassungs- und Ablehnungsanweisungen. mod_authz_host nutzt diese Phase, um zu funktionieren.
5. Authentifizierungsphase
Apaches Hauptaufgabe in dieser Phase: Benutzer gemäß der in der Konfigurationsdatei festgelegten Richtlinie authentifizieren und den Benutzernamensbereich festlegen. Module können in dieser Phase Hooks einfügen, um eine Authentifizierungsmethode zu implementieren.
6. Autorisierungsphase
Die Hauptaufgabe von Apache in dieser Phase besteht darin, zu prüfen, ob authentifizierte Benutzer den angeforderten Vorgang basierend auf der Konfigurationsdatei ausführen dürfen. Das Modul kann in dieser Phase Hooks einfügen, um eine Methode zur Benutzerrechteverwaltung zu implementieren.
7. Phase der MIME-Typprüfung
Apaches Hauptaufgabe in dieser Phase: Bestimmen der zu verwendenden Inhaltsverarbeitungsfunktion basierend auf den relevanten Regeln des MIME-Typs der angeforderten Ressource. Die Standardmodule mod_negotiation und mod_mime implementieren diesen Hook.
8. FixUp-Phase
Dies ist eine allgemeine Phase, die es dem Modul ermöglicht, alle erforderlichen Verarbeitungen vor dem Inhaltsgenerator auszuführen. Ähnlich wie Post_Read_Request ist dies ein Hook, der beliebige Informationen erfassen kann und auch der am häufigsten verwendete Hook ist.
9. Antwortphase
Apaches Hauptaufgabe in dieser Phase besteht darin, an den Kunden zurückgegebene Inhalte zu generieren und für das Senden einer angemessenen Antwort an den Kunden verantwortlich zu sein. Diese Phase ist der Kernbestandteil des gesamten Prozesses.
10. Protokollierungsphase
Apaches Hauptaufgabe in dieser Phase: Aufzeichnen von Transaktionen, nachdem die Antwort an den Client gesendet wurde. Module können die Standardprotokollierung von Apache ändern oder ersetzen.
11. CleanUp-Phase
Apaches Hauptaufgabe in dieser Phase: Bereinigen der nach Abschluss dieser Anforderungstransaktion verbleibenden Umgebung, z. B. die Verarbeitung von Dateien und Verzeichnissen oder das Schließen von Sockets, usw. Dies ist die letzte Phase einer Anforderungsverarbeitung durch Apache.
LAMP-Architektur:
Vier Schichten von unten nach oben:
①liunx gehört zur untersten Schicht des Betriebssystems
②Apache-Server, der zum Sekundärserver gehört, kommuniziert zwischen Linux und PHP
③php: Es handelt sich um eine serverseitige Programmiersprache und ist über das Modul php_module mit Apache verknüpft
④MySQL und andere Webdienste: gehören zu Anwendungsdiensten und sind über das Plugin-Modul „Erweiterungen“ von PHP mit MySQL verknüpft.
Architekturdiagramm des Android-Systems
Vergleichen Sie das Architekturdiagramm von Lamp und Android , es scheint ähnlich wie bei Lampe zu sein. Ich verstehe Android nicht, aber es fühlt sich ein bisschen ähnlich an. Experten können auf die Unterschiede hinweisen
Von oben nach unten:Android-Architektur ——————Beschreibung——–LAMP-Architektur
2. Anwendungsframework——Java————- PHP-Sprache und -Bibliothek3. Systemlaufzeitbibliothek: — virtuelle Maschine — WEB-Server ⒋Linux-Kernel: — Betriebssystem — - L in der Lampenarchitektur Verwandte Empfehlungen:
Erklärung des zugrunde liegenden Betriebsmechanismus und der Prinzipien von PHP
Analyse des zugrunde liegenden PHP : Pluralgewinnendes Farbforum ww7349cow über Copy-on-Write-Kuh, japanische Kuh, Kuhmilchstein
Detailliertes Verständnis des zugrunde liegenden Mechanismus von PHP_PHP-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für PHP-Grundprinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!