Heim > PHP-Framework > Swoole > Der Unterschied zwischen fpm und swoole

Der Unterschied zwischen fpm und swoole

(*-*)浩
Freigeben: 2019-12-02 11:46:33
Original
6572 Leute haben es durchsucht

Der Unterschied zwischen fpm und swoole

PHP-FPM

Frühe Versionen von PHP hatten keinen integrierten WEB-Server, sondern stellten SAPI (Server API) zur Verfügung ) Verbinden Sie sich mit Dritten. Das mittlerweile sehr beliebte PHP-FPM wickelt die Kommunikation zwischen PHP und WEB-Servern von Drittanbietern über das FastCGI-Protokoll ab. (Empfohlenes Lernen: Swoole-Video-Tutorial )

Zum Beispiel die Kombination von Nginx + PHP-FPM, das auf diese Weise ausgeführte FPM befindet sich im Master/Worker-Modus und startet a Master-Prozess zum Abhören von Nginx-Anfragen und Forks mehrerer Worker-Prozesse zur Bearbeitung der Anfragen. Jeder Worker-Prozess kann nur eine Anfrage bearbeiten. Der Lebenszyklus eines einzelnen Prozesses ist ungefähr wie folgt:

Initialisierungsmodul.

Initialisierungsanfrage. Mit der Anfrage ist hier die Aufforderung an PHP gemeint, Code auszuführen, nicht eine HTTP-Anfrage.

PHP-Skript ausführen.

Anfrage beenden.

Schließen Sie das Modul.

Swoole übernimmt auch den Master/Worker-Modus. Der Unterschied besteht darin, dass der Master-Prozess nur über einen Ereignisgenerator verfügt, der für die Überwachung von Ereignisänderungen des Socket-Handles verantwortlich ist. Worker wird in mehreren Prozessen ausgeführt, empfängt Anforderungen von Reactor-Threads und führt Rückruffunktionen aus (in PHP geschrieben). Der Prozess zum Starten des Master-Prozesses ist ungefähr:

Initialisierungsmodul.

Initialisierungsanfrage. Da Swoole über die CLI ausgeführt werden muss, werden die globalen Variablen von PHP wie $_SERVER, $_POST, $_GET usw. nicht initialisiert, wenn die Anfrage initialisiert wird.

PHP-Skript ausführen. Einschließlich lexikalischer und syntaktischer Analyse, Initialisierung von Variablen, Funktionen, Klassen usw. wechselt der Master in den Hörzustand und beendet den Prozess nicht.

Das Prinzip der Swoole-Beschleunigung

Der Reaktor (Epolls IO-Wiederverwendungsmethode) ist für die Überwachung der Ereignisänderungen des Socket-Handles verantwortlich, um das Problem der hohen Parallelität zu lösen.

Sparen Sie die Zeit der PHP-Code-Initialisierung durch speicherresidente Verwendung. Bei der Verwendung umfangreicher Frameworks ist der Beschleunigungseffekt der Verwendung von Swoole sehr offensichtlich.

Vergleich der Unterschiede

PHP-FPM

Master-Hauptprozess / Worker-Mehrprozessmodus.

Starten Sie den Master und warten Sie auf Anfragen, die von Nginx über das FastCGI-Protokoll übertragen werden.

Jeder Worker-Prozess entspricht nur einer Verbindung, die zur Ausführung des vollständigen PHP-Codes verwendet wird.

Nachdem der PHP-Code ausgeführt wurde, wird der gesamte belegte Speicher zerstört und die nächste Anforderung muss neu initialisiert werden und andere langwierige Vorgänge müssen ausgeführt werden.

Nur ​​für HTTP-Server.

Swoole

Master-Hauptprozess (bestehend aus mehreren Reactor-Threads)/Worker-Multiprozess- (oder Multi-Thread-)Modus

Starten Sie Master, initialisieren Sie den PHP-Code und der Reactor überwacht die Ereignisänderungen des Socket-Handles.

Der Reactor-Hauptthread ist für den Ausgleich der Multithreads verantwortlich, und der Manager-Prozess verwaltet mehrere Worker-Prozesse, einschließlich TaskWorker-Prozesse.

Jeder Worker akzeptiert Anfragen von Reactor und muss nur den PHP-Code im Callback-Funktionsteil ausführen.

Der PHP-Initialisierungscode wird nur einmal ausgeführt, wenn der Master startet. Der Master wechselt in den Abhörzustand und beendet den Prozess nicht.

Es kann nicht nur für HTTP-Server verwendet werden, sondern kann auch eine TCP-Verbindung und eine WebSocket-Verbindung herstellen.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen fpm und swoole. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage