So funktioniert PHP Lassen Sie uns zunächst die Beziehung zwischen den häufig verwendeten CGI, PHP-CGI, FastCGI und PHP-FPM verstehen, um das Funktionsprinzip von PHP zu verstehen. CGI-Protokoll Das CGI-Protokoll wird verwendet, um zu bestimmen, welche Daten und in welchem Format der Webserver (z. B. Nginx) an den Inhaltsverteilungsserver sendet. PHP-CGI-Prozessinterpreter php-cgi ist der CGI-Protokollprozessinterpreter von PHP. Bei jedem Start muss er den Prozess des Ladens der php.ini-Datei -> Initialisieren der Ausführungsumgebung -> Verarbeiten der Anfrage -> Zurückgeben des Inhalts an den Webserver -> Beenden des php-cgi-Prozesses durchlaufen. FastCGI-Protokoll Das FastCGI-Protokoll ist eine Ergänzung zur Effizienzsteigerung des CGI-Protokolls. Es zielt hauptsächlich darauf ab, die Notwendigkeit zu optimieren, bei jeder eingehenden Anfrage einen CGI-Interpreterprozess zu starten. Der CGI-Interpreterprozess muss die php.ini-Datei nicht mehr jedes Mal neu laden und die Ausführungsumgebung initialisieren, wenn er eine Webserveranforderung empfängt. php-fpm-Prozessmanager PHP-FPM ist eine Implementierung des FastCGI-Protokolls. Es ist ein Prozessmanager. Beim Start besteht es aus zwei Teilen: dem Masterprozess und dem Workerprozess. Der Masterprozess überwacht den Port und empfängt Anfragen vom Webserver. Normalerweise gibt es mehrere Workerprozesse. Jeder Workerprozess verfügt über einen CGI-Prozessinterpreter zum Ausführen von PHP-Code. PHP-Start und Funktionsprinzip Wenn phpfpm gestartet wird, wird der Masterprozess gestartet, die Datei php.ini geladen, die Ausführungsumgebung initialisiert und mehrere Arbeitsprozesse gestartet. Jedes Mal, wenn eine Anfrage eingeht, wird sie zur Verarbeitung an den Arbeitsprozess weitergeleitet. PHP-Prinzip für sanften Neustart Jedes Mal, wenn die php.ini-Konfiguration geändert und neu gestartet wird, wird ein neuer Arbeitsprozess gestartet, um die neue Konfiguration zu laden. Nach Abschluss der Arbeit wird der vorhandene Prozess zerstört, wodurch ein reibungsloser Neustart gewährleistet wird. So funktioniert nginx Wenn Sie das Prinzip der Zusammenarbeit zwischen Nginx und PHP verstehen möchten, müssen Sie zuerst auch den Serverteil der Nginx-Konfigurationsdatei verstehen. Server { listen 80; #Hört auf Port 80 und empfangt HTTP-Anfragen server_name www.example.com; #Speichert URLs im Allgemeinen und gibt an, welches Projekt konfiguriert ist root /home/wwwroot/zensmall/public/; #Die Stammverzeichnisadresse des Codes oder der Starteintrag des Codes index index.php index.html; #Standard-Homepage der Website #Wenn die URL der angeforderten Website eine Präfixübereinstimmung am Standort durchführt und die längste übereinstimmende Zeichenfolge dieses Konfigurationselement ist, überprüft die Reihenfolge, ob die Dateien vorhanden sind, und gibt die erste gefundene Datei zurück location / { #try_files, prüfe der Reihe nach, ob die Dateien existieren und gib die erste gefundene Datei zurück#$uri stellt die aktuelle Adresse ohne Anfrageparameter dar#$query_string stellt die Parameter dar, die von der Anfrage getragen werdentry_files $uri $uri/ /index.php?$query_string; #Überprüfe die $uri-Datei, um zu sehen, ob die $uri-Adresse existiert. Wenn ja, gib die erste gefundene Datei zurück; wenn keine existiert, initiiere eine interne Anfrage zum Zugriff auf /index.php?$query_string, die mit der folgenden Standortanfrage neu abgeglichen wird} #Wenn die PHP-Datei der Website angefordert wird, wird der Reverse-Proxy an php-fpm gesendet, um den Speicherort ~ \.php$ { zu verarbeiten. include fastcgi_params; #Fastcgi-Konfigurationsdatei einführen fastcgi_pass 127.0.0.1:9000; #IP-Adresse und Port festlegen, auf die der PHP-Fastcgi-Prozess hört fastcgi_index index.php; #Homepage-Datei festlegen fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #Pfad der Skriptdateianforderung festlegen} } Die allgemeine Bedeutung der obigen Serverkonfiguration lautet: Jedes Mal, wenn nginx auf Port 80 auf eine URL-Anforderung hört, führt es einen Standortabgleich mit der URL durch. Wenn die /-Regel übereinstimmt, wird eine interne Anforderungsumleitung vorgenommen, die eine interne Anforderung an /index.php?$query_string initiiert, und die entsprechende Standortkonfigurationsregel sendet die Anforderung an den Masterprozess von php-fpm, der auf Port 9000 lauscht. Zusammenfassen Im Folgenden wird der einfachste Benutzeranforderungsprozess zusammengefasst: Benutzer greift auf Domänennamen zu -> DNS-Auflösung des Domänennamens -> Anfrage an entsprechenden IP-Server und Port -> nginx hört auf Anfrage des entsprechenden Ports -> nginx gleicht den Standort der URL ab -> führt Regeln unter dem übereinstimmenden Standort aus -> nginx leitet Anfrage an PHP weiter -> php-fpm-Masterprozess hört auf Nginx-Anfrage -> Masterprozess weist Anfrage einem der inaktiven Arbeitsprozesse zu -> Arbeitsprozess führt Anfrage aus -> Arbeitsprozess gibt Ausführungsergebnis an nginx zurück -> nginx gibt Ergebnis an Benutzer zurück Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: 5 Tipps zum Schutz Ihres MySQL Data Warehouse
>>: So verwenden Sie die Form-Komponente von Antd in React, um Formularfunktionen zu implementieren
Hintergrund Im Unternehmen wurde ein neuer Server...
Vorwort MySQL unterstützt Multithread-Replikation...
Schwebende Elemente führen dazu, dass ihre überge...
Automatisierter Build bedeutet, Docker Hub zu ver...
Vorwort: In einigen früheren Artikeln haben wir h...
1. Melden Sie sich beim System an und geben Sie d...
Vorwort 1. Benchmarking ist eine Art Leistungstes...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Vorwort 1. Grundkenntnisse zu ...
RPM-Paketverwaltung Ein Verpackungs- und Installa...
Inhaltsverzeichnis 1. Grundlagen 1.Referenz 2. to...
Mehrere Unterschiede zwischen MySQL 5.x und MySQL...
Inhaltsverzeichnis Was ist das Beobachtermuster? ...
Hintergrund Wenn Sie auf manchen Webseiten von Ei...
Software- und Hardwareumgebung centos7.6.1810 64b...