Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des zugrunde liegenden Betriebsmechanismus und der Arbeitsprinzipien von PHP

Detaillierte Erläuterung des zugrunde liegenden Betriebsmechanismus und der Arbeitsprinzipien von PHP

coldplay.xixi
coldplay.xixinach vorne
2020-08-04 15:41:113054Durchsuche

Detaillierte Erläuterung des zugrunde liegenden Betriebsmechanismus und der Arbeitsprinzipien von PHP

Ich habe kürzlich einen Server eingerichtet und plötzlich habe ich gespürt, wie die Lampen funktionieren oder wie sie verbunden sind? Normalerweise schreibe ich nur Programme und habe nie über das Funktionsprinzip zwischen ihnen nachgedacht:

PHP zugrunde liegendes Arbeitsprinzip

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Kompetenz

Abbildung 1 PHP-Struktur

Wie auf dem Bild zu sehen ist , PHP Es ist ein 4-Schichten-System von unten nach oben

①Zend-Engine

Zend ist in reinem C implementiert und der Kernbestandteil von PHP. Es übersetzt PHP-Code (lexikalisch, Syntaxanalyse). , usw.) Prozess) verarbeitet ausführbare Opcodes und implementiert entsprechende Verarbeitungsmethoden, implementiert grundlegende Datenstrukturen (wie Hashtable, oo), Speicherzuweisung und -verwaltung und stellt entsprechende API-Methoden für externe Aufrufe bereit. Es ist der Kern von allem Funktionen werden rund um Zend implementiert.

②Erweiterungen

Rund um die Zend-Engine stellen Erweiterungen verschiedene grundlegende Dienste auf Komponentenbasis bereit. Unsere gemeinsamen verschiedenen integrierten Funktionen (z. B. Array-Serien), Standardbibliotheken usw. sind alles 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 Erweiterungsanwendungen).

③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 über 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

später im Sapi-Kapitel vorstellen. ④ Oberschichtanwendung

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 über den Webserver. Anwenden, als Skript über die Befehlszeile ausführen usw.

Architektonische Idee:

Das Modell Engine (Zend) + Komponente (ext) reduziert die interne Kopplung

Die mittlere Schicht (Sapi) isoliert das Web server und php

********************************************* ******* *******************************

Wenn PHP ein Auto ist, dann
Das Framework des Autos ist PHP selbst
Zend ist der Motor des Autos
Die verschiedenen Komponenten unter Ext sind die Räder des Autos
Sapi kann als Straße betrachtet werden, und das Auto kann auf verschiedenen Straßentypen fahren
Die Ausführung eines PHP-Programms ist wie ein Auto, das auf der Straße fährt.
Deshalb benötigen wir: Motor mit hervorragender Leistung + geeignete Räder + korrekte Landebahn

Die Beziehung zwischen Apache und PHP

Apache Das Parsen von PHP wird unter vielen Modulen durch das PHP-Modul vervollständigt.

Um PHP endgültig 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, die von uns installierten Versionen sind Apache2 und PHP5, dann müssen Sie die Hauptkonfigurationsdatei von Apache http.conf bearbeiten und die folgenden Zeilen hinzufügen:

Unix/Linux-Umgebung:

LoadModule php5_module modules/mod_php5.so
AddType application/x-httpd-php .php

Hinweis: module/mod_php5.so ist der Installationsort der Datei mod_php5.so in der X-Systemumgebung.

In einer Windows-Umgebung:

LoadModule php5_module d:/php/php5apache2.dll
AddType application/x-httpd-php .php

Hinweis: d:/php/php5apache2.dll ist der Installationsort der Datei php5apache2.dll in einer Windows-Umgebung.

Diese beiden Konfigurationen teilen dem Apache-Server mit, dass alle künftigen URL-Benutzeranfragen mit PHP als Suffix das Modul php5_module (mod_php5.so/php5apache2.dll) zur Verarbeitung aufrufen müssen.

Apaches Lebenszyklus

Apaches Anfrageverarbeitungsprozess

Detaillierte Erklärung des Apache-Anfrageverarbeitungszyklus

Alle 11 Phasen des Apache-Anfrageverarbeitungszyklus wurden abgeschlossen Welche Dinge?

1. Post-Read-Request-Phase
Im normalen Anforderungsverarbeitungsprozess ist dies die erste Phase, in der das Modul Hooks einfügen kann. Diese Phase kann von Modulen genutzt werden, die sehr früh mit der Bearbeitung von Anfragen beginnen möchten.

2. URI-Übersetzungsphase
Apaches Hauptaufgabe in dieser Phase: Zuordnung der angeforderten URL zum lokalen Dateisystem. 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. Die Hauptaufgabe von
Apache in dieser Phase: Überprüfen Sie, ob der Zugriff auf die angeforderte Ressource gemäß der Konfigurationsdatei zulässig ist. Die Standardlogik von Apache implementiert Zulassungs- und Ablehnungsanweisungen. mod_authz_host nutzt diese Phase, um zu funktionieren.

5. Authentifizierungsphase Die Hauptarbeit von
Apache 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 Hauptarbeit von
Apache in dieser Phase: Überprüfen, ob authentifizierte Benutzer den angeforderten Vorgang gemäß der Konfigurationsdatei ausführen dürfen. Das Modul kann in dieser Phase Hooks einfügen, um eine Methode zur Benutzerrechteverwaltung zu implementieren.

7. MIME-Typprüfungsphase
Apaches Hauptarbeit in dieser Phase: Bestimmen der zu verwendenden Inhaltsverarbeitungsfunktion gemäß 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 Die Hauptaufgabe von
Apache 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 Hauptarbeit in dieser Phase: Aufzeichnung von Transaktionen, nachdem die Antwort an den Client gesendet wurde. Module können die Standardprotokollierung von Apache ändern oder ersetzen.

11. Die Hauptaufgabe von Apache in dieser Phase: Bereinigen der Umgebung, die nach Abschluss dieser Anforderungstransaktion zurückbleibt, z. B. die Verarbeitung von Dateien und Verzeichnissen oder das Schließen von Sockets usw. Dies ist eine Apache-Zeit. Die letzte Phase der Anforderungsverarbeitung.

LAMPENarchitektur:

Vier Schichten von unten nach oben:

①liunx Gehört zur untersten Ebene des Betriebssystems

②Apache-Server, gehört zum sekundären Server, kommuniziert mit Linux und PHP

③php: Es gehört zur serverseitigen Programmiersprache und ist damit verbunden mit Apache über das php_module-Modul

④MySQL und andere Webdienste: gehören zu Anwendungsdiensten und sind über das Erweiterungs-Plug-In-Modul von PHP mit MySQL verknüpft

Android-Systemarchitekturdiagramm &@Lampen- und Android-Architektur Wenn man die Bilder vergleicht, scheint es der Lampenarchitektur etwas ähnlich zu sein, aber Experten können darauf hinweisen Der Unterschied. Vielen Dank

Von oben nach unten Weiter:

Android-Architektur------------- Beschreibung-------LAMP-Architektur

1. Anwendung------Spezifische Anwendung--------Webanwendung

2 ----Java------------PHP-Sprache und Bibliothek

3. Systemlaufzeitbibliothek:----Virtuelle Maschine---------WEB Server

⒋Linux-Kernel:---Betriebssystem-------Lampenarchitektur Die Beziehung zwischen der L

Lampe im und im Inneren des Computers

CPU ist die Fabrik, die Festplatte ist das große Lager und der Speicher ist das reguläre Übertragungszentrum, der virtuelle Speicher ist ein temporäres Übertragungszentrum

Php Die Sprache wird von Zend in Maschinensprache kompiliert und betreibt die CPU

Der Betrieb der Datenbank ist ein E/A-Vorgang und eine mechanische Bewegung, also der Betrieb einer Website. Der Engpass wird durch die verursacht Die Lösung besteht darin, die Anzahl der E/A-Vorgänge zu reduzieren und Puffertechnologie zu verwenden. Das heißt, die Datenoperationen werden in den Mencache gelegt, wenn sie eine bestimmte Größe erreichen Der Mencache gehört zur Schlüssel-Wert-Beziehung

Auch nicht relationale Daten basieren auf diesem Konzept und gehören ebenfalls zur Schlüssel-Wert-Beziehung

. Häufiger Lesevorgang ------ Legen Sie es in mencache

Lesen Sie mehr und schreiben Sie weniger ---- Legen Sie es in nosql ab ------ Die Lesefunktion ist sehr leistungsstark!

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des zugrunde liegenden Betriebsmechanismus und der Arbeitsprinzipien von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen