suchen
HeimBackend-EntwicklungPHP-TutorialDie Grundlagen der Funktionsweise von PHP

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:

Das zugrunde liegende Arbeitsprinzip von PHP

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

Die Beziehung zwischen Apache und PHP

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-Lebenszyklus

Apache-Anfrageverarbeitungsprozess

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

Android-Systemarchitekturdiagramm

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 -Bibliothek

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

⒋Linux-Kernel: - --Betriebssystem-------L

in 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!

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
Was sind einige häufige Probleme, die dazu führen können, dass PHP -Sitzungen scheitern?Was sind einige häufige Probleme, die dazu führen können, dass PHP -Sitzungen scheitern?Apr 25, 2025 am 12:16 AM

Gründe für einen Phpessionsfehler sind Konfigurationsfehler, Cookie -Probleme und Sitzungsablauf. 1. Konfigurationsfehler: Überprüfen Sie die richtige Sitzung und setzen Sie die korrekte Sitzung. 2. Kookie -Problem: Stellen Sie sicher, dass der Cookie korrekt eingestellt ist. 3.Sesion läuft ab: Passen Sie die Sitzung an.

Wie debuggen Sie Probleme im Zusammenhang mit Sitzungen in PHP?Wie debuggen Sie Probleme im Zusammenhang mit Sitzungen in PHP?Apr 25, 2025 am 12:12 AM

Zu den Methoden zur Debugg -Sitzungsprobleme in PHP gehören: 1. Überprüfen Sie, ob die Sitzung korrekt gestartet wird. 2. Überprüfen Sie die Lieferung der Sitzungs -ID; 3. Überprüfen Sie den Speicher und das Lesen von Sitzungsdaten. 4. Überprüfen Sie die Serverkonfiguration. Durch Ausgabe von Sitzungs-ID und Daten, Anzeigen von Sitzungsdateiinhalten usw. können Sie effektiv Diagnose und Lösen von Sitzungen im Zusammenhang mit Sitzungen diagnostizieren und lösen.

Was passiert, wenn Session_Start () mehrmals aufgerufen wird?Was passiert, wenn Session_Start () mehrmals aufgerufen wird?Apr 25, 2025 am 12:06 AM

Mehrere Anrufe bei Session_Start () führen zu Warnmeldungen und möglichen Datenüberschreibungen. 1) PHP wird eine Warnung ausstellen und veranlassen, dass die Sitzung gestartet wurde. 2) Dies kann zu unerwarteten Überschreibungen von Sitzungsdaten führen. 3) Verwenden Sie Session_Status (), um den Sitzungsstatus zu überprüfen, um wiederholte Anrufe zu vermeiden.

Wie konfigurieren Sie die Sitzungslebensdauer in PHP?Wie konfigurieren Sie die Sitzungslebensdauer in PHP?Apr 25, 2025 am 12:05 AM

Das Konfigurieren des Sitzungslebenszyklus in PHP kann durch Einstellen von Sitzungen erreicht werden. 1) Session.gc_maxLifetime steuert die Überlebenszeit der serverseitigen Sitzungsdaten, 2) Sitzung.cookie_Lifetime steuert den Lebenszyklus von Client-Cookies. Wenn der Keks auf 0 eingestellt ist, läuft es, wenn der Browser geschlossen ist.

Was sind die Vorteile der Verwendung einer Datenbank zum Speichern von Sitzungen?Was sind die Vorteile der Verwendung einer Datenbank zum Speichern von Sitzungen?Apr 24, 2025 am 12:16 AM

Die Hauptvorteile der Verwendung von Datenbankspeichersitzungen sind Persistenz, Skalierbarkeit und Sicherheit. 1. Persistenz: Auch wenn der Server neu gestartet wird, können die Sitzungsdaten unverändert bleiben. 2. Skalierbarkeit: Anwendbar für verteilte Systeme, um sicherzustellen, dass Sitzungsdaten zwischen mehreren Servern synchronisiert werden. 3. Sicherheit: Die Datenbank bietet verschlüsselten Speicher zum Schutz vertraulicher Informationen.

Wie implementieren Sie eine benutzerdefinierte Sitzung in PHP?Wie implementieren Sie eine benutzerdefinierte Sitzung in PHP?Apr 24, 2025 am 12:16 AM

Das Implementieren der benutzerdefinierten Sitzung in PHP kann durch die Implementierung der SessionHandlerInterface -Schnittstelle durchgeführt werden. Die spezifischen Schritte umfassen: 1) Erstellen einer Klasse, die SessionHandlerInterface wie CustomSessionHandler implementiert; 2) Umschreiben von Methoden in der Schnittstelle (z. B. offen, schließen, lesen, schreiben, zerstören, GC), um die Lebenszyklus- und Speichermethode von Sitzungsdaten zu definieren; 3) Registrieren Sie einen benutzerdefinierten Sitzungsprozessor in einem PHP -Skript und starten Sie die Sitzung. Auf diese Weise können Daten in Medien wie MySQL und Redis gespeichert werden, um Leistung, Sicherheit und Skalierbarkeit zu verbessern.

Was ist eine Sitzungs -ID?Was ist eine Sitzungs -ID?Apr 24, 2025 am 12:13 AM

SessionID ist ein Mechanismus, der in Webanwendungen verwendet wird, um den Benutzersitzstatus zu verfolgen. 1. Es handelt sich um eine zufällig generierte Zeichenfolge, mit der die Identitätsinformationen des Benutzers während mehrerer Interaktionen zwischen dem Benutzer und dem Server aufrechterhalten werden. 2. Der Server generiert und sendet ihn über Cookies- oder URL -Parameter an den Client, um diese Anforderungen in mehreren Anforderungen des Benutzers zu identifizieren und zu verknüpfen. 3. Die Erzeugung verwendet normalerweise zufällige Algorithmen, um Einzigartigkeit und Unvorhersehbarkeit zu gewährleisten. 4. In der tatsächlichen Entwicklung können In-Memory-Datenbanken wie Redis verwendet werden, um Sitzungsdaten zu speichern, um die Leistung und Sicherheit zu verbessern.

Wie gehen Sie mit Sitzungen in einer staatenlosen Umgebung (z. B. API) um?Wie gehen Sie mit Sitzungen in einer staatenlosen Umgebung (z. B. API) um?Apr 24, 2025 am 12:12 AM

Das Verwalten von Sitzungen in staatenlosen Umgebungen wie APIs kann durch Verwendung von JWT oder Cookies erreicht werden. 1. JWT ist für Staatenlosigkeit und Skalierbarkeit geeignet, aber es ist groß, wenn es um Big Data geht. 2. Kookies sind traditioneller und einfacher zu implementieren, müssen jedoch mit Vorsicht konfiguriert werden, um die Sicherheit zu gewährleisten.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion