Dieser Artikel stellt hauptsächlich die Grundlagen des Arbeitsprinzips von PHP vor. Er hat einen gewissen Referenzwert. Jetzt kann ich ihn mit allen teilen, die ihn brauchen.
Ich habe kürzlich einen Server gebaut fühlte sich an wie eine Lampe. Wie genau funktioniert es bzw. wie ist es angeschlossen? Normalerweise schreibe ich nur Programme und habe noch nie über das Funktionsprinzip zwischen ihnen nachgedacht:
Abbildung 1 PHP-Struktur
Wie auf dem Bild zu sehen ist, ist PHP von unten nach oben ein 4-Schichten-System
①Zend-Engine
Zend ist in reinem C implementiert und ist der Kernbestandteil von PHP. Es integriert die PHP-Codeübersetzung (eine Reihe von Kompilierungsprozessen wie lexikalische und syntaktische Analyse), verarbeitet ausführbare Opcodes und implementiert entsprechende Verarbeitungsmethoden, implementiert grundlegende Datenstrukturen (wie Hashtable, oo), Speicherzuweisung und -verwaltung und stellt entsprechende API-Methoden bereit Externe Anrufe sind der Kern von allem, und alle peripheren Funktionen 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 ihre eigenen 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 das Web Server und PHP
********************************************* ******* *******************************
Wenn PHP ein Auto wäre, dann
Das Gerüst 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 die Ausführung eines PHP-Programms bedeutet, dass das Auto auf der Straße fährt.
Daher benötigen wir: Motor mit hervorragender Leistung + geeignete Räder + korrekte Landebahn
Apache für PHP-Parsing ist abgeschlossen durch das PHP-Modul unter vielen Modulen.
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, 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:
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 Installationsort der Datei.
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 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.
Apache-Anfrage Ausführliche Erklärung der Verarbeitungsschleife
Was wird in den 11 Phasen der Apache-Anforderungsverarbeitungsschleife getan?
1. Post-Read-Request-Phase
Im normalen Anfrageverarbeitungsprozess ist dies die erste Phase, in der das Modul Hooks einfügen kann. Diese Phase kann für Module genutzt werden, die sehr früh mit der Bearbeitung von Anfragen beginnen möchten.
2. URI-Übersetzungsphase
Die Hauptarbeit von Apache in dieser Phase: Zuordnen 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. Zugriffskontrollphase
Die Hauptarbeit von Apache 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
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. Phase der MIME-Typprüfung
Die Hauptarbeit von Apache 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
Die Hauptaufgabe von Apache in dieser Phase besteht darin, an den Client zurückgegebene Inhalte zu generieren und für das Senden einer angemessenen Antwort an den Client verantwortlich zu sein. Diese Phase ist der Kernbestandteil des gesamten Prozesses.
10. Protokollierungsphase
Die Hauptarbeit von Apache 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. Bereinigungsphase
Die Hauptarbeit von Apache 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 das erste Mal, dass Apache die letzte Phase der Anforderungsverarbeitung durchführt.
LAMPENarchitektur:
Vier Schichten von unten nach oben:
①liunx gehört zur unteren Schicht von das Betriebssystem
②Apache-Server, gehört zum sekundären Server, kommuniziert mit Linux und PHP
③php: Es gehört zur serverseitigen Programmiersprache und ist über das Modul php_module mit Apache verknüpft
④MySQL und andere Webdienste: Gehört zum Anwendungsdienst, der über das Erweiterungs-Plug-In-Modul von PHP mit MySQL verknüpft ist
Vergleichen Sie das Architekturdiagramm von Lampe und Android. Es scheint der Lampenarchitektur etwas ähnlich zu sein. Ich kenne 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 1. Anwendung -------- Spezifische Anwendung ------- -Webanwendung 2. Anwendungsframework----Java------ -------PHP-Sprache und -Bibliothek3. Systemlaufzeitbibliothek: -- --Virtuelle Maschine---------WEB-Server⒋Linux-Kernel: - --Betriebssystem-------Lin der Lampenarchitektur Die Beziehung zwischen der Lampe und dem Inneren des Computers
Die CPU ist die Fabrik, Die Festplatte ist das große Lager, der Speicher ist das reguläre Übertragungszentrum und der virtuelle Speicher ist das temporäre Übertragungszentrum PHP-Sprache wird von Zend in Maschinensprache kompiliert und betreibt die CPU Auf der Datenbank handelt es sich um einen E/A-Vorgang und eine mechanische Bewegung. Mit anderen Worten: Der Engpass einer Website wird durch das Lesen und Schreiben auf die Festplatte verursacht Puffertechnologie bedeutet, dass die Datenoperationen im Mencache abgelegt werden und bei Erreichen einer bestimmten Größenordnung sofort in die Datenbank geschrieben werden. Der Mencache gehört zur Schlüssel-Wert-Beziehung relationale Daten. Es basiert auch auf diesem Konzept und gehört auch zur Schlüssel-Wert-Beziehung. Häufige Lesevorgänge ------ Legen Sie es in den Mencache schreibe weniger----Füge es in nosql ein----- -Die Lesefunktion ist sehr leistungsstark! Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website. Verwandte Empfehlungen:Einführung in die MVC-Struktur der PHP-Quellcode-Differenzierungsplattform
Analyse des Laravel5-Schnellauthentifizierungslogikprozesses
Das obige ist der detaillierte Inhalt vonDie Grundlagen der Funktionsweise von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!