Heim >Backend-Entwicklung >PHP-Tutorial >Eine detaillierte Einführung in den Funktionsmechanismus und die Prinzipien zwischen PHP und Nginx
Dieser Artikel bietet Ihnen eine detaillierte Einführung in den Funktionsmechanismus und die Prinzipien zwischen PHP und Nginx. Ich hoffe, dass er für Freunde hilfreich ist.
1. Wissenspunkte im Zusammenhang mit Nginx und PHP-fpm bekannt machen
Was ist Nginx
Nginx („Engine x“) ist ein leistungsstarkes HTTP und Antwortserver Ein Proxyserver, der auch ein IMAP/POP3/SMTP-Server ist.
Was ist PHP-fpm
1. CGI, Fast-CGI-Protokoll
Die Geschichte von CGI
Frühe Webserver verarbeiteten nur statische Dateien wie HTML Aber mit der Entwicklung der Technologie sind dynamische Sprachen wie PHP entstanden.
Der Webserver kann damit nicht umgehen, was soll ich tun? Dann überlassen Sie es dem PHP-Interpreter!
Es ist in Ordnung, es dem PHP-Interpreter zu überlassen, aber wie kommuniziert der PHP-Interpreter mit dem Webserver?
Um das Kommunikationsproblem zwischen verschiedenen Sprachinterpretern (z. B. PHP-, Python-Interpretern) und dem Webserver zu lösen, erschien das CGI-Protokoll. Solange Sie ein Programm gemäß dem CGI-Protokoll schreiben, können Sie eine Kommunikation zwischen dem Sprachinterpreter und dem Webwerver erreichen. Wie zum Beispiel ein PHP-CGI-Programm.
Verbesserungen von Fast-CGI
Mit dem CGI-Protokoll wird das Problem der Kommunikation zwischen dem PHP-Interpreter und dem Webserver gelöst und der Webserver kann endlich dynamische Sprachen verarbeiten.
Jedes Mal, wenn der Webserver eine Anfrage erhält, wird er jedoch einen CGI-Prozess forken und den Prozess dann beenden, nachdem die Anfrage abgeschlossen ist. Bei 10.000 Anfragen muss der PHP-CGI-Prozess 10.000 Mal geforkt und beendet werden.
Haben Sie schon einmal festgestellt, dass es eine Verschwendung von Ressourcen ist?
Als Ergebnis erschien eine verbesserte Version von CGI, Fast-CGI. Nachdem jede Anforderung von fast-cgi verarbeitet wurde, wird der Prozess nicht beendet, sondern beibehalten, sodass der Prozess mehrere Anforderungen gleichzeitig verarbeiten kann. Auf diese Weise ist es nicht erforderlich, einen Prozess jedes Mal neu zu forken, was die Effizienz erheblich verbessert.
2. Was ist php-fpm
php-fpm ist php-Fastcgi Process Manager.
php-fpm ist die Implementierung von FastCGI und bietet Prozessverwaltungsfunktionen.
Der Prozess umfasst den Master-Prozess und den Worker-Prozess.
Es gibt nur einen Master-Prozess, der für das Abhören des Ports und den Empfang von Anforderungen vom Webserver verantwortlich ist. Es gibt im Allgemeinen mehrere Worker-Prozesse (die spezifische Anzahl wird entsprechend den tatsächlichen Anforderungen konfiguriert). Darin eingebettet ist PHP, wo der Code tatsächlich ausgeführt wird.
2. So kombinieren Sie Nginx mit PHP-fpm
Wir wissen, dass Nginx nicht nur die Funktion hat, http-Anfragen zu verarbeiten, sondern auch als Reverse-Proxy verwendet werden kann.
Also leitet Nginx dynamische Anfragen über die Reverse-Proxy-Funktion an das Backend PHP-FPM weiter.
Lassen Sie uns ein neues Nginx+Php-fpm konfigurieren
1. Konfigurieren Sie die Datei nginx.conf
Geben Sie das Verzeichnis nginx ein und bearbeiten Sie die Datei nginx.conf.
Wie in der Abbildung gezeigt, fügen Sie in der letzten Zeile von nginx.conf die Include-Datei
hinzu. 2. Fügen Sie den entsprechenden Server
hinzu Geben Sie oben den Include-Pfad ein und fügen Sie einen Server hinzu.
Lassen Sie uns die Bedeutung der Konfigurationselemente erklären:
server { listen 80; #监听80端口,接收http请求 server_name www.example.com; #就是网站地址 root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径 #路由到网站根目录www.example.com时候的处理 location / { index index.php; #跳转到www.example.com/index.php autoindex on; } #当请求网站下php文件的时候,反向代理到php-fpm location ~ \.php$ { include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块 fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口 } }
Kurz gesagt: wenn wir www.example besuchen .com, der Verarbeitungsablauf ist wie folgt:
www.example.| || |.example.com/index.| |-| |-cgi监听127.0.0.1:| |.example.com/index.php请求到达127.0.0.1:9000 | | 等待处理。。。
Als nächstes aktivieren wir PHP-FPM von PHP, um diese Anfrage zu verarbeiten
Öffnen Sie die PHP -fpm.conf-Datei, sehen wir uns die folgende Konfiguration an:
Das heißt: Das PHP-FPM-Modul hört auf den Port 127.0.0.1:9000 und wartet auf die Anfrage, die bearbeitet werden soll.
3. Zusammenfassung
Die Kombination von Nginx und PHP-FPM, der gesamte Prozess ist so.
nginx与php-fpm的结合,完整的流程是这样的。 www.example.com | | Nginx | | 路由到www.example.com/index.php | | 加载nginx的fast-cgi模块 | | fast-cgi监听127.0.0.1:9000地址 . | | www.example.com/index.php请求到达127.0.0.1:9000 | | php-fpm 监听127.0.0.1:9000 | | php-fpm 接收到请求,启用worker进程处理请求 | | php-fpm 处理完请求,返回给nginx | | nginx将结果通过http返回给浏览器
4. Effektanzeige
1. Starten Sie die Nginx- und PHP-FPM-Module
Erfolgreich starten, überprüfen wir das PHP-FPM Prozess
Wie oben gezeigt, gibt es einen Master-Prozess und drei Worker-Prozesse.
Wir bearbeiten die Datei wie unten gezeigt:
PHP-Video-Tutorial auf der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonEine detaillierte Einführung in den Funktionsmechanismus und die Prinzipien zwischen PHP und Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!