Heim  >  Artikel  >  Backend-Entwicklung  >  Wie PHP funktioniert – hinter den Kulissen

Wie PHP funktioniert – hinter den Kulissen

Patricia Arquette
Patricia ArquetteOriginal
2024-11-16 06:24:03292Durchsuche

PHP (Hypertext-Präprozessor) – Übersicht

PHP ist eine serverseitige Skriptsprache, die ursprünglich 1994 von Rasmus Lerdorf zur Verwaltung seiner persönlichen Website entwickelt wurde. Im Jahr 1995 wurde PHP der Öffentlichkeit zugänglich gemacht, was Webentwicklern die einfachere Erstellung dynamischer Inhalte ermöglichte. PHP-Code läuft auf der Serverseite und eignet sich daher ideal zum Erstellen von Webanwendungen, die mit Datenbanken interagieren, Benutzereingaben verarbeiten und dynamische Webseiten bereitstellen.

Inhaltsverzeichnis

  1. Erste Schritte mit PHP
  2. Was sind Compiler und Interpreter?
  3. Was ist ein Dolmetscher und wie funktioniert er?
  4. Was ist ein Compiler und wie funktioniert er?
  5. Ist PHP eine kompilierte oder interpretierte Sprache?
  6. Wie funktioniert der JIT-Compiler in PHP?
  7. Umgebungen zum Ausführen des PHP-Codes
  8. Wie läuft PHP-Code über die CLI?
  9. Wie läuft PHP-Code über einen Webserver?

Erste Schritte mit PHP

Beginnen wir mit einem einfachen Beispiel:

echo "Hello world";

Wenn Sie diesen Code über das Terminal Ihres Computers ausführen, erhalten Sie die Ausgabe „Hallo Welt“ in Ihrem Terminal. Wir wissen, dass unser Computer nur den Maschinencode wie 0 oder 1 verstehen kann.

  • Aber wie versteht Ihr Computer den Code und führt ihn aus?
  • Wie wird PHP-Code in eine Form konvertiert, die der Computer ausführen kann?

Um dies zu verstehen, schauen wir uns an, wie Computer Code verstehen. Der Computer versteht nur Maschinencode, der ein Binärformat (0en und 1en) ist. Damit High-Level-Code wie PHP ausgeführt werden kann, muss er in Maschinencode übersetzt werden. Hier kommen Compiler und Interpreter ins Spiel.

Was sind Compiler und Interpreter?

Compiler und Interpreter sind beide Übersetzungssoftware oder -programme, die in Programmiersprachen geschriebenen Quellcode in Maschinencode umwandeln. Das heißt, der von uns geschriebene Code, den Menschen verstehen können, wird von diesen Compilern oder Interpretern in Maschinencode (0en und 1en) umgewandelt, den der Computer verstehen kann, sodass er Anweisungen ausführen und uns die Ausgabe liefern kann. Lassen Sie uns einen grundlegenden Überblick über diese Übersetzer verschaffen, um sie besser zu verstehen.

Was ist ein Dolmetscher und wie funktioniert er?

Ein Dolmetscher ist eine Art Übersetzer, der den gesamten in einer Hochsprache geschriebenen Quellcode Zeile für Zeile liest und jede Zeile sofort in Maschinencode umwandelt. Wenn beim Lesen einer Codezeile ein Fehler auftritt, stoppt es sofort und meldet den Fehler an den Programmierer, was das Debuggen erleichtert. Diese zeilenweise Ausführung macht den Prozess im Vergleich zu einem Compiler auch langsamer.

Was ist ein Compiler und wie funktioniert er?

Ein Compiler ist eine Art Übersetzer, der den gesamten in einer Hochsprache geschriebenen Quellcode auf einmal in Maschinencode umwandelt. Wenn im Code ein Fehler vorliegt, kompiliert der Compiler zwar den gesamten Code, der Fehler wird jedoch zur Laufzeit erkannt, wodurch es für den Programmierer schwieriger wird, den Fehler zu identifizieren und zu beheben. Da der Compiler jedoch den gesamten Quellcode auf einmal in Maschinencode umwandelt, ist er bei der Ausführung im Allgemeinen schneller als ein Interpreter.

Ist PHP eine kompilierte oder interpretierte Sprache?

Die Antwort lautet also: PHP ist in erster Linie eine interpretierte Sprache. Wenn ein PHP-Skript ausgeführt wird, analysiert der PHP-Interpreter den Code zur Laufzeit und führt ihn aus, anstatt ihn vorher in Maschinencode zu kompilieren, wie dies bei kompilierten Sprachen wie C oder C der Fall ist. Allerdings können einige Optimierungen, wie etwa das Bytecode-Caching mit Tools wie OPcache, die Leistung verbessern, indem kompilierter Bytecode gespeichert wird, um eine Neuinterpretation des Codes bei jeder Anfrage zu vermeiden.

Es gibt auch Projekte wie HHVM (HipHop Virtual Machine), das von Facebook entwickelt wurde, um PHP-Code mithilfe eines Just-In-Time (JIT)-Kompilierungsprozesses auszuführen. Dies ermöglicht es, PHP-Code in Zwischenbytecode zu kompilieren und ihn dann im Handumdrehen in Maschinencode zu kompilieren, wodurch die PHP-Ausführung beschleunigt wird. Mit PHP 8 ist die JIT-Kompilierung direkt in PHP integriert, sodass Teile des Codes kompiliert werden können, wodurch die Grenzen zwischen interpretiertem und kompiliertem Verhalten weiter verwischt werden.

So funktioniert der JIT-Compiler in PHP

JIT oder Just-In-Time-Kompilierung ist eine Methode zum Ausführen von Code, bei der Teile davon „just in time“ für die Ausführung und nicht im Voraus kompiliert werden. Im Gegensatz zur herkömmlichen interpretierten Ausführung, bei der Code Zeile für Zeile gelesen und ausgeführt wird, übersetzt die JIT-Kompilierung Teile des Codes in Maschinencode, unmittelbar bevor sie zur Laufzeit benötigt werden. Dies führt zu einer schnelleren Ausführung, da der Maschinencode direkt auf der CPU läuft und eine wiederholte Interpretation entfällt.

JIT-Kompilierung liegt zwischen vollständig interpretierter und vollständig kompilierter Ausführung. So funktioniert es im Allgemeinen:

  • Erste Interpretation: Der Code wird zunächst auf einfache Weise interpretiert oder ausgeführt, um zu analysieren, welche Teile am häufigsten verwendet werden oder rechenintensiv sind.

  • On-the-fly-Kompilierung: Der JIT-Compiler identifiziert „Hot Spots“ – Codeabschnitte, die häufig ausgeführt werden oder optimiert werden müssen. Anschließend werden diese Abschnitte zur Laufzeit in Maschinencode kompiliert.

  • Ausführung: Der kompilierte Maschinencode wird gespeichert, sodass zukünftige Ausführungen die optimierte Version verwenden können, ohne sie neu zu kompilieren, was die Leistung beschleunigt.

In PHP wurde JIT in PHP 8 eingeführt, wodurch häufig verwendete Funktionen oder Schleifen schneller ausgeführt werden können, indem sie bei der Ausführung in Maschinencode kompiliert werden. Andere Sprachen wie JavaScript (z. B. V8-Engine in Chrome) und Java nutzen ebenfalls die JIT-Kompilierung für ähnliche Leistungsvorteile.

Folgen wir dem folgenden Beispiel.

How PHP Works - Behind The Scene

Im ersten Block haben wir unseren geschriebenen Code. Dieser Code gelangt zunächst in den JIT (Just-In-Time-Compiler). Anschließend kompiliert das JIT den Code und führt ihn aus. Während dieser Ausführung liest das JIT den Code Zeile für Zeile und wandelt jede Zeile nach dem Lesen sofort in Maschinencode um. Wenn während des Lesevorgangs in einer Zeile ein Fehler auftritt, stoppt er genau dort und gibt diesen Fehler aus.

Das gibt uns also einen kleinen Eindruck davon, wie High-Level-PHP-Code (der Code, den wir schreiben) vom Computer verstanden und ausgeführt wird.

Umgebungen zum Ausführen des PHP-Codes

PHP-Skripte können in zwei Hauptumgebungen ausgeführt werden: der Befehlszeilenschnittstelle (CLI) und einer Webserverumgebung.

  • Befehlszeilenschnittstelle (CLI): PHP-Code kann direkt über die Befehlszeile auf Ihrem Computer ausgeführt werden. Dadurch können Entwickler Skripte ohne Browser ausführen, was häufig für Automatisierung, Cron-Jobs oder Testskripte verwendet wird.

  • Webserverumgebung: PHP wird üblicherweise in einer Webserverumgebung ausgeführt, in der der Code als Reaktion auf Anfragen eines Clients/Browsers ausgeführt wird. Wenn ein PHP-Skript angefordert wird, kommuniziert der Webserver mit der PHP-Engine über eine Schnittstellenschicht (wie CGI, FastCGI oder FPM), die das Skript verarbeitet und die Ausgabe an den Client zurückgibt.

Jede Umgebung bedient unterschiedliche Anwendungsfälle, sodass PHP eine flexible Sprache sowohl für Web- als auch für Befehlszeilenanwendungen ist.

Wie läuft PHP-Code über die CLI?

Unsere Computer enthalten verschiedene Anwendungen oder Programme, die wir für unterschiedliche Zwecke ausführen. Wenn wir diese Anwendungen oder Programme jedoch ausführen, können sie nicht selbstständig ausgeführt werden. Stattdessen laufen sie über das Betriebssystem des Computers. Wenn wir Code in PHP schreiben, wird daraus auch ein Programm, das wir über das Terminal des Computers ausführen können. Wenn wir also unseren Code über das Terminal ausführen, wird er auch über das Betriebssystem ausgeführt.

Die Frage ist also: Wie kommuniziert diese Anwendung oder dieses Programm oder der von uns geschriebene Code mit dem Betriebssystem unseres Computers?

Folgen wir dem folgenden Beispiel.

How PHP Works - Behind The Scene

Hier wird das zur Kommunikation mit dem Betriebssystem verwendete Mittel als OS-API (Betriebssystem-API) bezeichnet. Über diese Betriebssystem-API können Anwendungen oder Programme mit dem Betriebssystem des Computers kommunizieren, wie im Diagramm oben dargestellt. Dies gibt uns ein gewisses Verständnis dafür, wie PHP-Code über das Terminal auf unserem Computer ausgeführt wird.

Wie läuft PHP-Code über einen Webserver?

Zuerst senden wir vom Client/Browser eine Anfrage an den Webserver. Allerdings kann der Webserver nicht direkt mit der PHP-Engine kommunizieren. Für die Kommunikation zwischen dem Webserver und der PHP-Engine arbeitet eine Zwischenschicht zwischen ihnen, die als SAPI oder Server API bekannt ist. Als SAPIs kommen unterschiedliche Protokolle zum Einsatz, die es dem Webserver ermöglichen, mit der PHP-Engine zu kommunizieren. Zu diesen Protokollen gehören CGI, FastCGI, mod_php, FPM usw. Jedes dieser Protokolle kann für die Kommunikation zwischen dem Webserver und der PHP-Engine verwendet werden.

Folgen wir dem folgenden Beispiel.

How PHP Works - Behind The Scene

Die beiden beliebtesten Webserver zum Ausführen von PHP-Skripten sind Apache und Nginx:

  • Apache Server verwendet das mod_php-Protokoll als SAPI.
  • Nginx Server verwendet das FPM-Protokoll als SAPI.

Dies gibt uns ein besseres Verständnis dafür, wie PHP-Code auf einem Webserver läuft. Basierend auf den oben genannten Punkten.

Ich hoffe, ich habe eine grundlegende Vorstellung davon bekommen, wie PHP-Code tatsächlich hinter den Kulissen funktioniert. Wenn es hilfreich ist, vergessen Sie nicht, es mit anderen zu teilen.

Das obige ist der detaillierte Inhalt vonWie PHP funktioniert – hinter den Kulissen. 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