FastCGI-Prinzip
FastCGI ist eine Schnittstelle für die Kommunikation zwischen HttpServer und den beliebtesten HTTP-Servern unterstützt FastCGI, einschließlich Apache, Nginx und lighttpd. Gleichzeitig wird FastCGI auch von vielen Skriptsprachen unterstützt, darunter PHP. (Empfohlenes Lernen: nginx-Tutorial)
Die FastCGI-Schnittstelle verwendet eine C/S-Struktur, die den HTTP-Server und den Skript-Parsing-Server trennen und ein oder mehrere Skripte auf dem Skript-Parsing-Server starten kann gleichzeitig Parse-Daemon.
Immer wenn der HTTP-Server auf ein dynamisches Programm trifft, kann es zur Ausführung direkt an den FastCGI-Prozess übermittelt werden und das Ergebnis wird dann an den Client zurückgegeben. Mit dieser Methode kann der HTTP-Server ausschließlich statische Anforderungen verarbeiten oder die Ergebnisse des dynamischen Skriptservers an den Client zurückgeben, was die Leistung des gesamten Anwendungssystems erheblich verbessert.
Nginx+php-fpm-Implementierungsprinzip
Nginx selbst analysiert PHP nicht und Terminalanfragen für PHP-Seiten werden von Nginx an FastCGI übergeben Die vom Prozess überwachte IP-Adresse und der Port werden von PHP-FPM als dynamischer Analyseserver verarbeitet und die Verarbeitungsergebnisse werden schließlich an Nginx zurückgegeben.
Tatsächlich ist Nginx ein Reverse-Proxy-Server. Nginx leitet dynamische Anfragen über die Reverse-Proxy-Funktion an das Backend php-fpm weiter und realisiert so die Unterstützung für das PHP-Parsing. Dies ist das Prinzip der Implementierung des dynamischen PHP-Parsings durch Nginx.
Nginx unterstützt keinen direkten Aufruf oder Parsing externer Programme. Alle externen Programme (einschließlich PHP) müssen über die FastCGI-Schnittstelle aufgerufen werden.
Die FastCGI-Schnittstelle ist ein Socket unter Linux (dieser Socket kann ein Datei-Socket oder ein IP-Socket sein). Um ein CGI-Programm aufzurufen, wird außerdem ein FastCGI-Wrapper benötigt (ein Wrapper kann als ein Programm verstanden werden, das zum Starten eines anderen Programms verwendet wird). Dieser Wrapper ist an einen festen Socket gebunden, beispielsweise einen Port oder einen Datei-Socket.
Wenn Nginx über die FastCGI-Schnittstelle eine CGI-Anfrage an diesen Socket sendet, empfängt der Wrapper die Anfrage und erzeugt dann einen neuen Thread. Dieser Thread ruft den Interpreter oder ein externes Programm auf, um das Skript zu verarbeiten und die Rückgabedaten zu lesen ; Dann übergibt der Wrapper die zurückgegebenen Daten über die FastCGI-Schnittstelle und schließlich sendet Nginx die zurückgegebenen Daten an den Client.
Das obige ist der detaillierte Inhalt vonWie phpfpm und nginx kommunizieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!