Ausführliche Erläuterung der Funktionsweise von PHP auf dem Webserver

不言
Freigeben: 2023-04-04 10:48:01
nach vorne
2616 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine detaillierte Erklärung der Funktionsweise von PHP auf dem Webserver. Ich hoffe, dass er für Sie hilfreich ist. .

CGI Common Gateway Interface (Common Gateway Interface)

CGI ist das Common Gateway Interface (Common Gateway Interface). ein Programm, Laienhaft ausgedrückt ist CGI wie eine Brücke, die Webseiten und das Ausführungsprogramm auf dem WEB-Server verbindet. Sie leitet die von HTML empfangenen Anweisungen an das Ausführungsprogramm des Servers weiter und gibt dann die Ergebnisse des Ausführungsprogramms des Servers an die HTML-Seite zurück. CGI Die plattformübergreifende Leistung ist hervorragend und auf nahezu jedem Betriebssystem umsetzbar. CGI ist bereits ein älteres Modell und wurde in den letzten Jahren nur noch selten eingesetzt.

Jedes Mal, wenn eine Benutzeranfrage vorliegt, wird zuerst ein CGI-Unterprozess erstellt, dann wird die Anfrage verarbeitet und der Unterprozess wird nach der Verarbeitung beendet. Dies ist das Fork-and-Execute Modus. Wenn die Anzahl der Benutzeranforderungen sehr groß ist, werden große Mengen an Systemressourcen wie Speicher, CPU-Zeit usw. belegt, was zu einer geringen Leistung führt. Daher verfügt ein Server, der CGI verwendet, über so viele CGI-Unterprozesse wie Verbindungsanforderungen. Das wiederholte Laden von Unterprozessen ist der Hauptgrund für die geringe CGI-Leistung.

Wenn Sie PHP nicht in serverseitige Software (wie Apache) einbetten und als Modul installieren möchten, können Sie es im CGI-Modus installieren. Oder verwenden Sie PHP mit verschiedenen CGI-Wrappern, um sichere Chroot- und Setuid-Umgebungen für Ihren Code zu erstellen. Auf diese Weise fordert jeder Client eine PHP-Datei an, und der Webserver ruft php.exe (php.exe unter Win, PHP unter Linux) auf, um die Datei zu interpretieren, und gibt dann das Ergebnis der Interpretation in Form von an den Client zurück eine Webseite. Diese Installationsmethode installiert normalerweise die ausführbare PHP-Datei im cgi-bin-Verzeichnis des Webservers. Die CERT-Empfehlung CA-96.11 empfiehlt, keine Interpreter im cgi-bin-Verzeichnis abzulegen.

Der Vorteil dieser Methode besteht darin, dass sie den Webserver von der spezifischen Programmverarbeitung trennt, eine klare Struktur und eine starke Steuerbarkeit aufweist. Gleichzeitig besteht der Nachteil darin, dass bei hoher Zugriffsnachfrage der CGI-Prozess unterbrochen wird Es stellt eine enorme Belastung für den Server dar. Stellen Sie sich vor, dass Hunderte von gleichzeitigen Anforderungen dazu führen, dass der Server Hunderte von Prozessen abspaltet. Aus diesem Grund war CGI schon immer für seine geringe Leistung und seinen hohen Ressourcenverbrauch bekannt.

Fast-CGI (Long-Live-CGI)

Eine Variante des CGI-Modus, das heißt (CGI ist normal People, Fast-CGI ist Spezialeinheiten)

FastCGI ist wie ein langlebiges CGI. Es kann jederzeit ausgeführt werden, solange es nicht jedes Mal aktiviert wird Fork-and-Execute-Modus von CGI).

Das Funktionsprinzip von FastCGI ist:

  1. Der FastCGI-Prozessmanager wird geladen, wenn der Webserver startet [PHPs FastCGI-Prozessmanager ist PHP-FPM (php-FastCGI-Prozess). Manager)] (IIS ISAPI oder Apache-Modul);

  2. FastCGI-Prozessmanager initialisiert sich selbst und startet mehrere CGI-Interpreterprozesse (sichtbar im Task-Manager mehrerer PHP-CGI). exe) und warten Sie auf eine Verbindung vom Webserver.

  3. Wenn eine Client-Anfrage den Webserver erreicht, wählt der FastCGI-Prozessmanager einen CGI-Interpreter aus und stellt eine Verbindung zu ihm her. Der Webserver sendet CGI-Umgebungsvariablen und Standardeingaben an den FastCGI-Unterprozess php-cgi.

  4. Nachdem der FastCGI-Unterprozess die Verarbeitung abgeschlossen hat, gibt er über dieselbe Verbindung Standardausgabe- und Fehlerinformationen an den Webserver zurück. Wenn der untergeordnete FastCGI-Prozess die Verbindung schließt, wird die Anfrage verarbeitet. Der untergeordnete FastCGI-Prozess wartet dann auf die nächste Verbindung vom FastCGI-Prozessmanager (der in WebServer ausgeführt wird) und verarbeitet diese. Im normalen CGI-Modus wird php-cgi.exe hier beendet.

Im CGI-Modus können Sie sich vorstellen, wie langsam CGI normalerweise ist. Jede Webanfrage an PHP muss php.ini neu analysieren, alle DLL-Erweiterungen neu laden und alle Datenstrukturen neu initialisieren. Bei FastCGI geschieht dies alles nur einmal, nämlich beim Start des Prozesses. Ein zusätzlicher Vorteil besteht darin, dass die dauerhafte Datenbankverbindung funktioniert.

cli-Befehlszeilenschnittstelle (Befehlszeilenschnittstelle)

Geben Sie php script.php in das Terminal ein. Warten Sie auf die Befehlszeile

Webmodulmodus (Modulmodus, der von Webservern wie Apache ausgeführt wird)

Der Modulmodus ist in Form des Moduls mod_php5 integriert. Zu diesem Zeitpunkt ist die Rolle von mod_php5 Modul Es empfängt von Apache übergebene PHP-Dateianforderungen, verarbeitet diese Anforderungen und gibt die verarbeiteten Ergebnisse dann an Apache zurück. Es handelt sich um eine auf CGI basierende Erweiterung von Apache, um die Betriebseffizienz von PHP zu beschleunigen. Wenn wir das PHP-Modul (mod_php5) in seiner Konfigurationsdatei konfigurieren, bevor Apache startet, registriert das PHP-Modul den ap_hook_post_config-Hook von Apache2 und startet dieses Modul, wenn Apache beginnt, Anfragen für PHP-Dateien anzunehmen.

Zusätzlich zu dieser Lademethode beim Start können Apache-Module dynamisch zur Laufzeit geladen werden, was bedeutet, dass der Server erweitert werden kann, ohne dass der Quellcode neu kompiliert werden muss oder sogar ohne den Server überhaupt anzuhalten. Wir müssen lediglich das Signal HUP oder AP_SIG_GRACEFUL an den Server senden, um den Server zu benachrichtigen, das Modul neu zu laden. Vor dem dynamischen Laden müssen wir das Modul jedoch in eine dynamische Linkbibliothek kompilieren. Beim dynamischen Laden wird zu diesem Zeitpunkt die dynamische Linkbibliothek geladen. Die Verarbeitung dynamischer Linkbibliotheken in Apache wird über das Modul mod_so abgeschlossen, sodass das Modul mod_so nicht dynamisch geladen, sondern nur statisch in den Kern von Apache kompiliert werden kann. Dies bedeutet, dass es zusammen mit Apache gestartet wird.

Wie lädt Apache Module? Zuerst müssen wir eine Zeile zur Apache-Konfigurationsdatei httpd.conf hinzufügen:

LoadModule php5_module modules/mod_php5.so
Nach dem Login kopieren

Hier verwenden wir den LoadModule-Befehl. Der erste Parameter des Befehls ist der Name des Moduls Code der Modulimplementierung. Die zweite Option ist der Pfad, in dem sich das Modul befindet. Wenn Sie ein Modul laden müssen, während der Server läuft, können Sie das Signal HUP oder AP_SIG_GRACEFUL an den Server senden. Sobald das Signal empfangen wird, lädt Apache das Modul neu, ohne den Server neu zu starten.

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Funktionsweise von PHP auf dem Webserver. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage