Empfohlen: „PHP-Video-Tutorial“
PHP verfügt über fünf Betriebsmodi und es gibt 4 gängige:
1.CGI (Common Gateway Interface)
2.FastCGI (Resident) CGI / Long-Live CGI)
3.CLI (Command Line Run/Command Line Interface)
4.LoadModule [Apache-exklusiv]
5. ISAPI (Internet Server Application Program Interface) [IIS-exklusiv]
Bemerkungen: Nach PHP5.3, PHP-Nr verfügt nicht mehr über einen ISAPI-Modus und die Datei php5isapi.dll existiert nach der Installation nicht mehr. Um eine höhere Version von PHP auf IIS6 zu verwenden, müssen Sie die FastCGI-Erweiterung installieren und dann IIS6 für die Unterstützung von FastCGI aktivieren.
Den aktuellen Betriebsmodus anzeigen
echo php_sapi_name();
CGI-Modus
Einführung:
CGI ist das Common Gateway Interface (Common Gateway Interface). CGI ist wie eine Brücke, die die Webseite und das Ausführungsprogramm auf dem Webserver verbindet. Sie leitet die vom HTML empfangenen Anweisungen an das Ausführungsprogramm des Servers weiter und gibt dann die Ergebnisse des Serverausführungsprogramms an die HTML-Seite zurück. CGI ist äußerst plattformübergreifend und kann auf fast jedem Betriebssystem implementiert werden.
Aufrufprozess: Fork-And-Execute-Modus
Benutzeranfrage –> Der Webserver empfängt die Anfrage [häufig verwendetes Nginx, Apache] –> forkt den CGI-Unterprozess und verarbeitet die Anfrage –-> Die Anfrage wird verarbeitet und zurückgegeben. Das Ergebnis geht an den Webserver und zerstört den untergeordneten Prozess. -> Der Webserver gibt das Ergebnis an den Benutzer zurück , jede Anfrage wird unabhängig verarbeitet und der Aufrufprozess ist einfach genug. Klar und kontrollierbar
Die Prozesse sind isoliert, um sicherzustellen, dass die Daten nicht kontaminiert werdenNachteile:
Jede Anfrage muss einen neuen CGI-Unterprozess forken . Wenn tausend gleichzeitige Anforderungen vorliegen, bedeutet dies, dass tausend untergeordnete Prozesse gegabelt werden müssen, was zu mehreren Problemen führt:
Zu viele untergeordnete Prozesse führen dazu, dass die CPU viel Zeit mit Kontextwechseln verbringt
Jede Anfrage erfordert das Neuladen zugehöriger Ressourcen
FastCGI-Modus
Wenn der Webserver startet, werden der PHP-FPM-Masterprozess (hauptsächlich verantwortlich für die Zuweisung von Anforderungen an inaktive selbstuntergeordnete Prozesse zur Verarbeitung) und eine bestimmte Anzahl von Fast-CGI ausgeführt untergeordnete Prozesse (verantwortlich für die Verarbeitung von Fragen). Der PHP-FPM-Masterprozess verwaltet einen Prozesspool. Es gibt mehrere Fast-CGI-Unterprozesse im Pool. Jeder Fast-CGI-Unterprozess verarbeitet eine Anfrage unabhängig voneinander, ohne sich gegenseitig zu stören.
Benutzeranfrage –> Der Webserver empfängt die Anfrage [häufig verwendet Nginx, Apache] –> Erkennt, dass es sich um eine PHP-Anfrage handelt und leitet sie an den FPM-Masterprozess weiter. cgi-Unterprozess zur Bearbeitung der Anfrage –> > Master gibt das Ergebnis an den Webserver zurück —> Webserver gibt die Ergebnisse an den Benutzer zurück
Abbildung:Aus Leistungssicht trennt FastCGI die Verarbeitung der dynamischen Logik vom Webserver. Die E/A-Verarbeitung mit hoher Last bleibt weiterhin bestehen der Host-Server, damit sich der Host-Server auf E/A konzentrieren kann [Bei einer normalen dynamischen Webseite gibt es möglicherweise nur einen kleinen Teil der logischen Verarbeitung, und mehr ist das Laden statischer Ressourcen wie Bilder]
Nachteile:
Ein Fast-CGI-Unterprozess kann jeweils nur eine Anfrage verarbeiten, sodass die gleichzeitige Leistung der Website durch die Anzahl der Unterprozesse begrenzt ist.
Wenn zu viele Prozesse geöffnet werden, verschwendet die CPU viel Zeit Prozesskontextwechsel.
Jedes Mal, wenn der untergeordnete Fast-CGI-Prozess angefordert wird, müssen die relevanten Ressourcen neu geladen werden und die Ressourcen müssen freigegeben werden, wenn die Anforderung abgeschlossen ist.
CLI (Command Line Run/Command Line Interface)
Einführung :
Der PHP-CLI-Modus gehört zum Befehlszeilenmodus und ist für viele Entwickler, die gerade mit dem Erlernen von PHP begonnen haben und mit wamp und wnmp begonnen haben, der unbekannteste Betriebsmodus.
Dieser Modus erfordert nicht die Verwendung anderer Programme. Sie können ihn direkt aufrufen php xx.php zum Ausführen von PHP-Code
Befehlszeilenmodus Was sich offensichtlich vom regulären Webmodus unterscheidet, ist:
Keine Zeitüberschreitung
Pufferpufferung ist standardmäßig deaktiviert
Verwendung von STDIN- und STDOUT-Standardeingaben/-ausgaben/-fehlern
echo var_dump, phpinfo und andere Ausgaben werden direkt an die Konsole ausgegeben
Verwendbare Klassen/Funktionen Unterschiedlich
php.ini-Konfigurationen sind unterschiedlich
PS: Weitere Informationen finden Sie in der offiziellen Dokumentation: www.php.net/manual/zh/features.com...
LoadModule (Apache-exklusiv)
Einführung:
Der Modulmodus ist in Form des mod_php5-Moduls integriert. Zu diesem Zeitpunkt besteht die Funktion des mod_php5-Moduls darin, von Apache übergebene PHP-Dateianforderungen zu empfangen und zu verarbeiten diese Anfragen und geben die verarbeiteten Ergebnisse dann an Apache zurück.
In der Apache-Konfigurationsdatei httpd.conf spielt das normalerweise hinzugefügte LoadModule php7_module „D:/…/php71/php7apache2_4.dll“ die Rolle dieses
Aufrufprozesses:
Benutzeranfrage –> Apache-Server – > ; Rufen Sie das Modul mod_php5 auf, um die Anfrage zu verarbeiten —> Geben Sie das Ergebnis der Anfrage an Apache zurück —> Apache gibt das Ergebnis an den Benutzer zurück
Abbildung:
ISAPI (Internet Server Application Program Interface)
Einführung :
Nach PHP5.3 verfügt PHP nicht mehr über den ISAPI-Modus und die Datei php5isapi.dll ist nach der Installation nicht mehr vorhanden. Um eine höhere Version von PHP auf IIS6 zu verwenden, müssen Sie die FastCGI-Erweiterung installieren und dann IIS6 für die Unterstützung von FastCGI aktivieren. Daher werde ich hier nicht zu viel vorstellen. Nginx wird von Entwicklern aufgrund seiner geringen Größe und hervorragenden Parallelitätsleistung zunehmend bevorzugt. Die einst im Internet beliebte LAMP-Kombination ist für PHP-Entwickler nicht mehr die erste Wahl. Die plötzlich aufkommende LNMP-Kombination ist für PHPer zu einem Pflichtkurs geworden. Dies hat dazu geführt, dass das Apache-basierte LoadModule-Modell immer weniger erwähnt wird.
Darüber hinaus sind der CLI-Modus zum Schreiben von Befehlszeilenskripten und der fast ausgestorbene ISAPI-Modus offensichtlich nicht für die Erstellung von Websites geeignet.Als erweiterte Version von CGI übernimmt der Fast-CGI-Modus die Einfachheit und Sicherheit von CGI und verwendet PHP-FPM zur Verwaltung untergeordneter Prozesse, sodass sich der Webserver mehr auf die Verarbeitung von E/A konzentrieren kann. PHP-FPM verwaltet und verwaltet einen Prozess Pool, der eine bestimmte Anzahl von untergeordneten Prozessen im Voraus forken kann, um auf die Verarbeitung von Anforderungen zu warten. Es ist nicht erforderlich, den untergeordneten Prozess zu forken, wenn die Anforderung eintrifft, und den untergeordneten Prozess auch nicht zu zerstören, wenn die Anforderung endet.
Das obige ist der detaillierte Inhalt vonMachen Sie sich mit dem PHP-Betriebsmodus vertraut. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!