Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds zwischen FastCGI und PHP-FPM

Detaillierte Erklärung des Unterschieds zwischen FastCGI und PHP-FPM

小云云
小云云Original
2018-03-02 09:13:492539Durchsuche


Was ist CGI? ist ein Protokoll und hat nichts mit Prozessen oder ähnlichem zu tun. Der Webserver (z. B. Nginx) ist lediglich ein Verteiler von Inhalten.

Beispiel: 1) Wenn es sich bei der Anfrage um /*.html-statische Daten handelt, findet der Webserver diese Datei im Dateisystem und sendet sie an den Browser. 2) Wenn es sich bei der Anfrage um dynamische /*.php-Daten handelt, muss Nginx einen PHP-Parser finden, der diese gemäß der Konfigurationsdatei verarbeitet. Dann verarbeitet es die Anfrage einfach und übergibt sie an den PHP-Parser.

Welche Daten wird Nginx an den PHP-Parser übergeben? URLs, Abfragezeichenfolgen, POST-Daten und HTTP-Header werden alle einbezogen. Daher handelt es sich bei CGI um ein Protokoll, das festlegt, welche Daten übertragen und in welchem ​​Format an das Backend zur Bearbeitung der Anfrage übergeben werden sollen.

Wenn der Webserver die Anfrage /*.php empfängt, startet er das entsprechende CGI-Programm, das den PHP-Parser darstellt. Als nächstes analysiert der PHP-Parser die Datei php.ini, initialisiert die Ausführungsumgebung, verarbeitet die Anforderung, gibt das verarbeitete Ergebnis in dem von CGI angegebenen Format zurück und beendet den Prozess. Der Webserver gibt die Ergebnisse dann an den Browser zurück. 2. Was ist FastCGI?

Grundsätzlich wird FastCGI verwendet, um die Leistung von CGI-Programmen zu verbessern. Ähnlich wie CGI kann auch FastCGI als Protokoll bezeichnet werden.

FastCGI ist wie ein langlebiges CGI. Solange es aktiviert ist, dauert es nicht jedes Mal, bis es gegabelt ist (dies ist das am meisten kritisierte Merkmal von CGI). Fork-and-Execute-Modus). Es unterstützt auch verteiltes Rechnen, das heißt, FastCGI-Programme können auf anderen Hosts als dem Website-Server ausgeführt werden und Anfragen von anderen Website-Servern akzeptieren.

FastCGI ist eine sprachunabhängige, skalierbare offene CGI-Erweiterung. Ihr Hauptverhalten besteht darin, den CGI-Interpreterprozess im Speicher zu halten und so eine höhere Leistung zu erzielen.



Wie FastCGI funktioniert 1) Der FastCGI-Prozessmanager (IIS ISAPI oder Apache-Modul) wird geladen, wenn der Webserver startet 2) Der FastCGI-Prozessmanager initialisiert sich selbst und startet mehrere CGI-Interpreter Prozess ( mehrere PHP-CGI sichtbar) und auf die Verbindung vom Webserver warten. 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 auf dem Webserver ausgeführt wird) und verarbeitet diese. Im CGI-Modus wird php-cgi an dieser Stelle beendet.



Im obigen Fall können Sie sich vorstellen, wie langsam CGI normalerweise ist. Jede Webanfrage an PHP muss php.ini erneut analysieren, alle 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 dauerhafte Datenbankverbindungen funktionieren. 3. Was ist php-cgi?

php-cgi ist nur ein CGI-Programm. Es kann nur Anfragen analysieren und Ergebnisse zurückgeben, aber keine Prozesse verwalten. 4. Was ist php-fpm?

php-fpm ist der FastCGI-Prozessmanager. Für die spezifische Implementierung des FastCGI-Protokolls ist er für die Verwaltung eines Prozesspools zur Verarbeitung von Anforderungen vom Webserver verantwortlich. Derzeit ist php-fpm nach der PHP5.3-Version in PHP integriert.

php-fpm starten:

/usr/local/php/sbin/php-fpm

php-fpm schließen:

pkill php - fpm

oder

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm restart:

kill -USR2 `cat /usr/local/php/var/run/php-fpm/pid`

Überprüfen Sie, ob php-fpm erfolgreich gestartet wurde:

netstat -tunpl | 90001 oder

ps gerp php-fpm

Starten Sie php-fpm beim Booten:

Öffnen Sie /ect/rc.local und treten Sie /usr/local/php/ bei. sbin/php-fpm

Signale: INT, TERM Sofort beenden
QUIT Reibungslos beenden

USR1 Protokolldatei erneut öffnen

USR2 Alle Arbeitsprozesse reibungslos neu laden und Laden neu starten Protokolle und Binärmodule

Verwandte Empfehlungen:

Implementierung des FastCGI-Protokolls in PHP und umfassendes Verständnis

Vergleich von CGI , FastCGI, der Unterschied zwischen PHP-CGI und PHP-FPM

PHP FastCGI-Prozessmanager PHP-FPM-Architektur

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen FastCGI und PHP-FPM. 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