Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien

小云云
小云云Original
2018-03-14 14:35:401706Durchsuche

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

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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.

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
Apach-Anfrageverarbeitungsprozess
Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien

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:

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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: Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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-EngineDetaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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, dann

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

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
Apach-Anfrageverarbeitungsprozess
Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien

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:

Detaillierte Erläuterung der Beispiele für PHP-Grundprinzipien
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:

Detaillierte Erläuterung der Beispiele für PHP-GrundprinzipienAndroid-Architektur ——————Beschreibung——–LAMP-Architektur

1. Anwendung——–Spezifische Anwendung——–Webanwendung

2. Anwendungsframework——Java————- PHP-Sprache und -Bibliothek

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

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