


Lassen Sie uns über den Kommunikationsmechanismus zwischen Nginx und PHP-FPM sprechen und sehen, wie man ihn konfiguriert.
In diesem Artikel geht es um den Kommunikationsmechanismus zwischen Nginx und PHP-FPM, die Unterschiede zwischen den beiden Kommunikationsmethoden, die Konfiguration der Kombination von Nginx und PHP-FPM und die Analyse der Auswahl der Kommunikationsmethode in der Anwendung. Ich hoffe, es kann allen helfen!
Einführung in PHP-FPM
CGI-Protokoll und FastCGI-Protokoll
Die Codedateien jeder dynamischen Sprache (PHP, Python usw.) müssen den entsprechenden Parser passieren, damit sie vom Server erkannt werden Es wird das CGI-Protokoll verwendet, das es dem Interpreter und dem Server ermöglicht, miteinander zu kommunizieren. Das Parsen von PHP-Dateien auf dem Server erfordert die Verwendung eines PHP-Interpreters in Verbindung mit dem entsprechenden CGI-Protokoll, damit der Server PHP-Dateien analysieren kann.
Da der Mechanismus von CGI es erfordert, bei jeder Verarbeitung einer Anfrage einen CGI-Prozess zu forken und den Prozess dann nach Abschluss der Anfrage abzubrechen, was in praktischen Anwendungen eine Verschwendung von Ressourcen darstellt, erschien eine verbesserte Version von CGI, FastCGI Nachdem die Anfrage verarbeitet wurde, wird der FastCGI-Prozess nicht abgebrochen, sondern weiterhin mehrere Anfragen verarbeiten, was die Effizienz erheblich verbessert.
Was ist PHP-FPM? PHP-FPM ist PHP-FastCGI Process Manager. Es ist die Implementierung von FastCGI und bietet Prozessverwaltungsfunktionen. Der Prozess umfasst zwei Typen: Master-Prozess und Worker-Prozess; es gibt nur einen Master-Prozess, der für das Abhören des Ports und den Empfang von Anforderungen vom Server verantwortlich ist, während es im Allgemeinen mehrere Worker-Prozesse gibt (die spezifische Anzahl wird entsprechend der tatsächlichen konfiguriert). benötigt), und in jedem Prozess ist einer eingebettet. Der PHP-Interpreter ist der Ort, an dem der Code tatsächlich ausgeführt wird.
Kommunikationsmechanismus zwischen Nginx und PHP-FPMWenn wir eine Website (z. B. www.test.com) besuchen, ist der Verarbeitungsablauf wie folgt: www.test.com
|
|
Nginx
|
|
路由到 www.test.com/index.php
|
|
加载 nginx 的 fast-cgi 模块
|
|
fast-cgi 监听 127.0.0.1:9000 地址
|
|
www.test.com/index.php 请求到达 127.0.0.1:9000
|
|
等待处理...
Die Kombination von Nginx und PHP-FPM
on Unter Linux kommuniziert Nginx auf zwei Arten mit PHP-FPM: TCP-Socket und Unix-Socket.
Der Vorteil des TCP-Sockets besteht darin, dass er serverübergreifend verwendet werden kann. Diese Methode kann nur verwendet werden, wenn sich Nginx und PHP-FPM nicht auf demselben Computer befinden. Unix-Socket, auch IPC-Socket (Inter-Process-Communication) genannt, wird verwendet, um die Interprozesskommunikation auf demselben Host zu implementieren. Diese Methode erfordert das Ausfüllen des Socket-Dateispeicherorts von php-fpm in der Nginx-Konfigurationsdatei. Der Datenübertragungsprozess der beiden Methoden ist in der folgenden Abbildung dargestellt:Der Unterschied zwischen den beiden:
server { listen 80; #监听 80 端口,接收http请求 server_name www.test.com; #就是网站地址 root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径 #路由到网站根目录 www.test.com 时候的处理 location / { index index.php; #跳转到 www.test.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; # tcp 方式,php-fpm 监听的 IP 地址和端口 # fasrcgi_pass /usr/run/php-fpm.sock # unix socket 连接方式 } }2) Konfiguration von php-fpm
listen = 127.0.0.1:9000 # 或者下面这样 listen = /var/run/php-fpm.sockBeachten Sie, dass es bei Verwendung der Unix-Socket-Methode zum Herstellen einer Verbindung Probleme mit der Berechtigungskontrolle gibt, da es sich bei der Socket-Datei im Wesentlichen um eine Datei handelt. Sie müssen daher auf die Berechtigungen des Nginx-Prozesses und die Berechtigungen von PHP-FPM achten, andernfalls Sie wird aufgefordert, ohne Erlaubnis darauf zuzugreifen. (Benutzer in ihren jeweiligen Konfigurationsdateien festlegen) Die Kommunikation zwischen PHP-FPM und Nginx kann über die obige Konfiguration abgeschlossen werden. Auswahl in der AnwendungWenn Nginx und PHP-FPM auf demselben Server ausgeführt werden und die Parallelität nicht hoch ist (nicht mehr als 1000), wählen Sie einen Unix-Socket, um die Kommunikationseffizienz von Nginx und PHP-FPM zu verbessern.
Wenn Sie mit einem hohen gleichzeitigen Geschäft konfrontiert sind, sollten Sie die Verwendung eines zuverlässigeren TCP-Sockets in Betracht ziehen, um die Effizienz durch Betriebs- und Wartungsmethoden wie Lastausgleich und Kerneloptimierung aufrechtzuerhalten.
Wenn die Parallelität hoch ist, Sie aber dennoch den Unix-Socket verwenden möchten, können Sie die Stabilität des Unix-Sockets mit den folgenden Methoden verbessern.
server { listen 80 default backlog = 1024; }In der php-fpm.conf-Datei
listen.backlog = 10243) Fügen Sie die Sock-Datei und die PHP-FPM-Instanz hinzu Erstellen Sie eine neue Sock-Datei in /dev/shm und übergeben Sie die Anfrage Über das Upstream-Modul in Nginx wird die Last auf zwei Sock-Dateien verteilt, und die beiden Sock-Dateien werden zwei Sätzen von PHP-FPM-Instanzen zugeordnet. Empfohlenes Lernen: „
PHP-Video-Tutorial
“Das obige ist der detaillierte Inhalt vonLassen Sie uns über den Kommunikationsmechanismus zwischen Nginx und PHP-FPM sprechen und sehen, wie man ihn konfiguriert.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugehörigen Daten im Voraus laden. 2. Wählen Sie nur die erforderlichen Felder aus, um das Laden vollständiger Entitäten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entität und rufen Sie Clear () regelmäßig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische Änderungsverfolgung in Szenarien, in denen Änderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -Überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gewährleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections

Mit Bref ermöglicht es PHP-Entwicklern, skalierbare, kostengünstige Anwendungen zu erstellen, ohne Server zu verwalten. 1.Bref bringt Php nach AWSLambda, indem er eine optimierte PHP -Laufzeitschicht bereitstellt, Php8.3 und andere Versionen unterstützt und sich nahtlos in Frameworks wie Laravel und Symfony integriert. 2.. 3. Führen Sie den Befehl ServerlessDeploy aus, um die Bereitstellung abzuschließen, apiCateway automatisch zu konfigurieren und Zugriffs -URLs zu generieren. 4. Für Lambda -Beschränkungen bietet BREF Lösungen.

Der Müllsammlung von PHP basiert auf der Referenzzählung, aber kreisförmige Referenzen müssen von einem periodischen kreisförmigen Müllsammler verarbeitet werden. 1. Die Referenzzahl gibt den Speicher sofort frei, wenn keine Referenz auf die Variable vorhanden ist. 2. Referenzreferenz bewirkt, dass Speicher nicht automatisch freigegeben werden kann, und es hängt davon ab, dass GC ihn erfasst und reinigt. 3.. GC wird ausgelöst, wenn das "mögliche Wurzel" den Schwellenwert erreicht oder manuell gc_collect_cycles () aufruft; 4. Langzeit laufende PHP-Anwendungen sollten gc_status () überwachen und rechtzeitig gc_collect () aufrufen, um Speicherleckage zu vermeiden. 5. Zu den Best Practices gehört die Vermeidung von kreisförmigen Referenzen, die Verwendung von gc_disable () zur Optimierung der Leistungsschlüsselbereiche und Dereference -Objekte über die Clear () -Methode des ORM.

HTTP-Protokoll Middleware in Go kann Anforderungsmethoden, Pfade, Client-IP und zeitaufwändiges Aufzeichnen aufzeichnen. 1. Verwenden Sie http.Handlerfunc, um den Prozessor zu wickeln, 2. Nehmen Sie die Startzeit und die Endzeit vor und nach dem Aufrufen als nächstes auf. Der vollständige Beispielcode wurde überprüft, um auszuführen und eignet sich zum Starten eines kleinen und mittelgroßen Projekts. Zu den Erweiterungsvorschlägen gehören das Erfassen von Statuscodes, die Unterstützung von JSON -Protokollen und die Nachverfolgung von ID -IDs.

Verwenden Sie zunächst JavaScript, um die Einstellungen für Benutzersysteme und lokal gespeicherte Themeneinstellungen zu erhalten und das Seitenthema zu initialisieren. 1. Die HTML -Struktur enthält eine Schaltfläche zum Auslösen von Themenwechsel. 2. CSS verwendet: root, um helle Themenvariablen zu definieren, .Dark-Mode-Klasse definiert dunkle Themenvariablen und wendet diese Variablen über var () an. 3.. JavaScript erkennt bevorzuge-farbige Scheme und liest LocalStorage, um das ursprüngliche Thema zu bestimmen. 4. Schalten Sie die Dark-Mode-Klasse im HTML-Element beim Klicken auf die Schaltfläche und speichern Sie den aktuellen Status vor LocalStorage. 5. Alle Farbänderungen werden mit einer Übergangsanimation von 0,3 Sekunden begleitet, um den Benutzer zu verbessern

TestthepdfinanotherapptodetermineeiftheisueiswithTheFileoredge.2.Enablethebuilt-InpdfviewerByTurningOff "immerOpenpdffileSexTternal" und "DownloadPdffffiles" Inedgesetings
