Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über fastcgi und php-fpm in PHP

Eine kurze Diskussion über fastcgi und php-fpm in PHP

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-15 17:27:202842Durchsuche

Dieser Artikel gibt Ihnen eine kurze Einführung in fastcgi und php-fpm in PHP. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über fastcgi und php-fpm in PHP

Wenn es um PHP-Entwicklung geht, werden fastcgi und php-fpm auf jeden Fall erwähnt. Diese beiden Dinge spielen eine entscheidende Rolle für die Leistung von PHP. Während meines Praktikums bei Baidu wurde PHP-FPM als ODP-Umgebung verwendet, aber ich hatte keine Ahnung davon und hatte sogar eine vage Vorstellung von PHP als Ganzes. Die Aufgabe wurde in den letzten zwei Tagen vorzeitig abgeschlossen nutzte diese Gelegenheit, um mehr über PHP zu erfahren.

Webserver

PHP ist eine serverseitige Sprache, die speziell für die Webentwicklung entwickelt wurde. Zu den gängigen PHP-Architekturen gehören LAMP und LNMP.

Eine kurze Diskussion über fastcgi und php-fpm in PHP

Apache verarbeitet PHP-Anfragen

mod_php-Modus

Es ist ersichtlich, dass die Anfrage an Apache gesendet wird und Apache dann PHP analysiert und verarbeitet und das Ergebnis an den Client zurückgibt. Wenn wir die LAMP-Architektur verwenden, müssen wir die Apache-Konfigurationsdatei httpd.conf

加入如下两句
LoadModule phpx_module PHP_ROOT/phpxapache2_2.dllAddType appliaction/x-httpd-php.php
将下面语句做如下修改<IfModule dir_module> DirectoryIndex index.html</IfModule>改为 <IfModule dir_module> DirectoryIndex index.html index.htm index.php index.phtml</IfModule>

ändern und LoadModule verwenden, um phpx_module zu laden (x ist die PHP-Versionsnummer). Es versteht sich, dass PHP als Untermodul von Apache ausgeführt wird. Wenn eine Anfrage für den Zugriff auf PHP gestellt wird, ruft Apache phpx_module auf, um den PHP-Code zu analysieren.

Wie analysiert php_module PHP-Code? - Über Sapi.

Die Beziehung zwischen Apache, PHP und Sapi ist wie folgt:

Eine kurze Diskussion über fastcgi und php-fpm in PHP

Sapi ist eine Zwischenschicht, die eine Schnittstelle für externe Kommunikation bereitstellt, ähnlich einem Socket, sodass PHP mit anderen Anwendungen für Daten interagieren kann. PHP bietet eine Vielzahl von Sapi, z. B. php_module für Apache und Nginx, ISAPI für IIS usw.

Der Ausführungsprozess von Apache, der PHP aufruft:

Apache -> php_module -> sapi -> PHP

Kurz gesagt, der Modus, in dem der Webserver PHP über die php_module-Methode analysiert ist mod_php.

mod_fastcgi-Modus

Eine andere Möglichkeit von PHPs Sapi besteht darin, den CGI-Modus bereitzustellen. Jetzt wurde CGI durch FastCGI ersetzt.

Die sogenannte CGI ist eine gemeinsame Gateway-Schnittstelle. Wenn der Webserver die Anfrage empfängt, übergibt er sie an das CGI-Programm (z. B. PHPs Fastcgi verarbeitet die Anfrage (parst PHP) und gibt sie dann zurück Ergebnis an den Webserver, der Webserver sendet die Anfrage dann an den Client zurück.

Der Nachteil von CGI besteht darin, dass jede Anfrage einen Start- und Beendigungsprozess hat. Dies ist der viel kritisierte Fork-and-Execute-Modus, der bei einer großen Anzahl gleichzeitiger Anfragen beendet wird.

Die Geburt von fastcgi gleicht diesen Mangel aus. Sein Prinzip besteht darin, frühzeitig auf Anfragen zu warten und nach der Beantwortung der Anfrage nicht zu beenden und weiter auf die nächste Anfrage zu warten.

Der Laufmodus, der fastcgi verwendet, heißt mod_fastcgi.

Vergleichen Sie die Unterschiede zwischen mod_php und mod_fastcgi. Ersteres führt PHP als Modul des Webservers aus und PHP ist stark in den Server integriert. Letzterer verwendet fastcgi als Zwischenprozess, während PHP und Webserver fastcgi nur zum Vervollständigen von Anforderungen und Antworten verwenden.

Eine kurze Diskussion über fastcgi und php-fpm in PHP

mod_php-Modus

mod_php-Modus: Jedes Mal, wenn Apache eine Anfrage akzeptiert, generiert er einen Prozess zum Herstellen einer Verbindung zu PHP, um die Anfrage über Sapi abzuschließen. Bei hoher Parallelität ist dies offensichtlich nicht der Fall in der Lage, es zu ertragen.

Eine kurze Diskussion über fastcgi und php-fpm in PHP

mod-fastcgi-Modus

Wie auf diesem Bild zu sehen ist, ruft httpd bei jedem Eintreffen einer Anfrage sapi auf, um die Anfrage an PHP weiterzuleiten, und wird nach Abschluss nicht beendet und auf die nächste Anfrage warten. Die Parallelitätsleistung wird erheblich verbessert.

php-fpm

Schärfen Sie das Messer und hacken Sie Holz. Die vorherige Erklärung dient nur der Einführung von php-fpm. Was macht PHP-FPM? Tatsächlich wird es zur Unterstützung von Fastcgi verwendet.

fastcgi ist eine plattformunabhängige und sprachunabhängige Schnittstellenimplementierung. Sie muss lediglich in verschiedenen Sprachen gemäß den vorgeschriebenen Methoden implementiert werden, um die Kommunikation mit dem Webserver abzuschließen. Das im Bild oben gezeigte PHP-CGI ist der FastCGI-Manager, der mit PHP geliefert wird.

Es gibt zwei Hauptprobleme mit php-cgi, die im Internet beobachtet werden:

  • Nachdem php-cgi die php.ini geändert hat, müssen Sie php-cgi neu starten, damit die neue php.ini wirksam wird, und es kann nicht neu gestartet werden glatt.

  • Wenn Sie PHP-CGI direkt beenden, kann PHP nicht ausgeführt werden.

php-fpm behebt die oben genannten Mängel perfekt und ist ein dedizierter FastCGI-Manager.

Kurz gesagt besteht die Rolle von php-fpm darin, Fastcgi in PHP gezielt zu verwalten, sodass PHP sicher und stabil mit dem Webserver zusammenarbeiten kann, um den Anforderungsantwortprozess unter Bedingungen hoher Parallelität abzuschließen.

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über fastcgi und php-fpm in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:imooc.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen