Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen PHP-FPM und Swoole?

Was ist der Unterschied zwischen PHP-FPM und Swoole?

WBOY
WBOYOriginal
2022-02-10 11:03:394204Durchsuche

Unterschiede: 1. „PHP-FPM“ gilt nur für HTTPServer, während swoole nicht nur für HTTPServer verwendet wird, sondern auch TCP-Verbindungen herstellen kann. 2. „PHP-FPM“ überwacht Nginx-Übertragungsanfragen über das FastCGI-Protokoll Swoole überwacht Ereignisse durch Reaktorwechsel.

Was ist der Unterschied zwischen PHP-FPM und Swoole?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 7.1, DELL G3-Computer

Was ist der Unterschied zwischen PHP-FPM und Swoole? Es gibt keinen integrierten WEB-Server, sondern SAPI (Server). API) wird für die Anbindung Dritter bereitgestellt. Das sehr beliebte PHP-FPM verwaltet jetzt die Kommunikation zwischen PHP und WEB-Servern von Drittanbietern über das FastCGI-Protokoll.

Zum Beispiel ist die Kombination von Nginx + PHP-FPM, wobei FPM auf diese Weise ausgeführt wird, der Master/Worker-Modus, bei dem ein Master-Prozess gestartet wird, um Anforderungen von Nginx zu überwachen, und dann mehrere Worker-Prozesse gegabelt werden, um die Anforderungen zu bearbeiten. Jeder Worker-Prozess kann nur eine Anfrage bearbeiten. Der Lebenszyklus eines einzelnen Prozesses ist ungefähr wie folgt: 1. 2. Initialisierungsanfrage. Mit der Anfrage ist hier die Aufforderung an PHP gemeint, den Code auszuführen, nicht eine HTTP-Anfrage.

3. PHP-Skript ausführen.

4. Beenden Sie die Anfrage.

5. 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 der Ereignisänderungen des Socket-Handles verantwortlich ist. Der Worker wird in einem Mehrprozessmodus ausgeführt, empfängt Anforderungen von Reactor-Threads und führt Rückruffunktionen (in PHP geschrieben) aus. Der Prozess zum Starten des Master-Prozesses ist ungefähr:

1. Initialisieren Sie das Modul.

2. Initialisierungsanfrage. Da Swoole über CLI ausgeführt werden muss, werden die globalen Variablen von PHP wie $_SERVER, $_POST, $_GET usw. bei der Initialisierung der Anforderung nicht initialisiert.

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

Das Prinzip der Swoole-Beschleunigung

Reactor (Epolls IO-Wiederverwendungsmethode) ist für die Überwachung von Ereignisänderungen von Socket-Handles verantwortlich, um Probleme mit hoher Parallelität zu lösen.

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

2. Vergleichen Sie die verschiedenen

PHP-FPM

Master-Hauptprozess / Worker-Mehrprozessmodus. Starten Sie den Master und überwachen Sie 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 den Master, initialisieren Sie den PHP-Code und der Reactor überwacht die Ereignisänderungen des Sockets handhaben.

Der Hauptthread von Reactor ist für den Ausgleich von 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 in den Abhörzustand wechselt und den Prozess nicht beendet.

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

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen PHP-FPM und Swoole?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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