Heim  >  Artikel  >  Backend-Entwicklung  >  Es gibt mehrere Startmodi in PHP

Es gibt mehrere Startmodi in PHP

王林
王林Original
2019-09-16 11:58:593492Durchsuche

Es gibt mehrere Startmodi in PHP

Mehrere gängige Startmodi von PHP:

1. CGI-Modus

CGI ist die gemeinsame Gateway-Schnittstelle (Common Gateway Interface), es ist ein Programm, um es für Laien auszudrücken: Es ist wie eine Brücke, die Webseiten und das Ausführungsprogramm im Webserver verbindet. Es leitet die von HTML empfangenen Anweisungen an das Ausführungsprogramm des Servers weiter führt den Server aus. Die Ergebnisse des Programms werden an die HTML-Seite zurückgegeben. CGI ist äußerst plattformübergreifend und kann auf fast jedem Betriebssystem implementiert werden. 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 der CGI-Prozess bei hohem Zugriffsbedarf unterbrochen wird Fork wird zu einer enormen Belastung für den Server. Stellen Sie sich vor, dass Hunderte gleichzeitiger Anforderungen dazu führen, dass der Server Hunderte von Prozessen aufspaltet. Aus diesem Grund war CGI schon immer für seine geringe Leistung und seinen hohen Ressourcenverbrauch bekannt.

2. FastCGI-Modus

FastCGI ist eine aktualisierte Version von FastCGI, die jederzeit ausgeführt werden kann Wenn es aktiviert ist, dauert es nicht jedes Mal, bis es gegabelt wird (dies ist der am meisten kritisierte Fork-and-Execute-Modus von CGI).

FastCGI ist eine skalierbare Hochgeschwindigkeitsschnittstelle für die Kommunikation zwischen HTTP-Servern und dynamischen Skriptsprachen. Die meisten gängigen HTTP-Server unterstützen FastCGI, darunter Apache, Nginx und lighttpd. Gleichzeitig wird FastCGI auch von vielen Skriptsprachen unterstützt, darunter PHP.

Die FastCGI-Schnittstelle übernimmt eine C/S-Struktur, die den HTTP-Server und den Skript-Parsing-Server trennen und einen oder mehrere Skript-Parsing-Daemons auf dem Skript-Parsing-Server starten kann. Jedes Mal, wenn der HTTP-Server auf ein dynamisches Programm trifft, kann es zur Ausführung direkt an den FastCGI-Prozess übermittelt und das Ergebnis dann an den Browser zurückgegeben werden. Mit dieser Methode kann der HTTP-Server ausschließlich statische Anforderungen verarbeiten oder die Ergebnisse des dynamischen Skriptservers an den Client zurückgeben, was die Leistung des gesamten Anwendungssystems erheblich verbessert.

3. CLI-Modus

PHP-CLI ist die Abkürzung für PHP Command Line Interface, da es sich, wie der Name schon sagt, um die Schnittstelle handelt, auf der PHP ausgeführt werden kann Die Befehlszeile unterscheidet sich von der PHP-Umgebung (PHP-CGI, ISAPI usw.), die auf dem Webserver ausgeführt wird. Mit anderen Worten: PHP kann nicht nur Front-End-Webseiten schreiben, sondern auch zum Schreiben von Back-End-Programmen verwendet werden. PHP CLI Shell Scripting gilt für alle PHP-Vorteile und ermöglicht die Erstellung von Skripten oder serverseitigen Systemen oder sogar mit GUI-Anwendungen. Der PHP-CLI-Modus wird sowohl unter Windows als auch unter Linux unterstützt.

[Vorteile]

1) Verwendung mehrerer Prozesse Nach Beendigung des untergeordneten Prozesses ist der Kernel für das Recycling von Ressourcen verantwortlich. Verwenden Sie mehrere Prozesse. Das abnormale Beenden des untergeordneten Prozesses führt nicht dazu, dass der gesamte Prozess-Thread beendet wird, und der übergeordnete Prozess hat weiterhin die Möglichkeit, den Prozess neu zu erstellen

3) Ein residenter Hauptprozess ist nur verantwortlich für die Aufgabenverteilung und die Logik ist klarer.

Unter Linux verwenden wir häufig „php -m“, um herauszufinden, welche Erweiterungen PHP installiert hat. Dies ist der PHP-Befehlszeilen-Ausführungsmodus. Interessierte Schüler können „php -h“ eingeben, um diesen Ausführungsmodus eingehend zu studieren .

4. Modulmodus


Der Modulmodus ist in Form des Moduls mod_php5 integriert. Zu diesem Zeitpunkt besteht die Funktion des Moduls mod_php5 darin, PHP-Dateien zu empfangen Anfragen, die von Apache übergeben werden, verarbeiten diese Anfragen und geben die verarbeiteten Ergebnisse dann an Apache zurück. 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? Nehmen wir als Beispiel das zuvor erwähnte Modul mod_php5. Zuerst müssen wir eine Zeile zur Apache-Konfigurationsdatei httpd.conf hinzufügen:

LoadModule php5_module modules/mod_php5.so

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.

Dieser Betriebsmodus wird häufig verwendet, wenn der Apache-Server in der Windows-Umgebung verwendet wird. Bei der Modularisierung (DLL) wird PHP zusammen mit dem Webserver gestartet und ausgeführt. (Es handelt sich um eine auf CGI basierende Erweiterung von Apache, um die Betriebseffizienz von PHP zu beschleunigen.)

5. ISAPI-Modus

ISAPI (Internet Server Application Program Interface) ist eine Reihe von API-Schnittstellen für Internetdienste, die von Microsoft bereitgestellt werden, einer ISAPI-DLL. Es kann nach der Aktivierung durch eine Benutzeranforderung im Speicher verbleiben und auf eine weitere Anforderung des Benutzers warten. Sie können auch mehrere Benutzeranforderungsverarbeitungsfunktionen in einer DLL festlegen. Darüber hinaus befinden sich die ISAPI-DLL-Anwendung und der WWW-Server im selben Prozess , was die Effizienz deutlich verbessert. (Aufgrund der Exklusivität von Microsoft kann es nur in der Windows-Umgebung ausgeführt werden)

Als Apache-Modul generiert der Apache-Server vorab mehrere Prozesskopien und befindet sich nach dem Systemstart im Speicher. Es wird sofort verwendet, um diese Ersatz-Unterprozesse für die Verarbeitung zu verwenden, sodass keine Verzögerung durch das Laichen von Unterprozessen entsteht. Diese Serverkopien werden nicht sofort nach der Verarbeitung einer HTTP-Anfrage beendet, sondern bleiben auf dem Computer und warten auf die nächste Anfrage. Die Reaktion auf Client-Browseranfragen ist schneller und die Leistung ist höher.

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEs gibt mehrere Startmodi in 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