PHP-FPM
Frühe Versionen von PHP hatten keinen integrierten WEB-Server, sondern stellten Dritten SAPI (Server API) zur Verfügung Parteien Andocken. 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 )
Beispielsweise ist die Kombination von Nginx + PHP-FPM, FPM, das auf diese Weise ausgeführt wird, der Master/Worker-Modus, der einen Master-Prozess zur Überwachung von Anforderungen startet von Nginx und verzweigen Sie dann mehrere Worker-Prozesse, um die Anfrage zu bearbeiten. 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 gemeint, dass PHP aufgefordert wird, Code auszuführen, und nicht eine HTTP-Anfrage.
PHP-Skript ausführen.
Anfrage beenden.
Schließen Sie das Modul.
Swoole
Swoole verwendet auch den Master/Worker-Modus. Der Unterschied besteht darin, dass der Master-Prozess mehrere Reaktor-Threads hat und der Master nur ein verantwortlicher Ereignisgenerator ist zum Abhören der Socket-Handle-Änderungen in Ereignissen.
Worker läuft in mehreren Prozessen, empfängt Anfragen von Reactor-Threads und führt Rückruffunktionen aus (in PHP geschrieben). Der Prozess zum Starten des Master-Prozesses ist ungefähr wie folgt:
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 Probleme mit hoher Parallelität zu lösen .
Sparen Sie die Zeit der PHP-Code-Initialisierung durch speicherresidenten Einsatz. Bei der Verwendung umfangreicher Frameworks ist der Beschleunigungseffekt der Verwendung von Swoole sehr offensichtlich.
Das obige ist der detaillierte Inhalt vonWarum ist Swoole schneller als FPM?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!