Heim > Artikel > Backend-Entwicklung > Was ist der Unterschied zwischen PHP-FPM und Swoole?
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.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 7.1, DELL G3-Computer
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-FPMMaster-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.
SwooleMaster-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!