Heim > Artikel > PHP-Framework > Der Unterschied zwischen Swoole und RPC in PHP
RPC ist die Abkürzung für Remote Procedure Call.
Das Prinzip des RPC-Aufrufs im SAP-System ist eigentlich sehr einfach. Es gibt einige C/S-Systeme, die der dreistufigen Architektur ähneln. Das Client-Programm von Drittanbietern ruft die Standard- oder benutzerdefinierten Funktionen auf innerhalb von SAP über die Schnittstelle zu erhalten Die von der Funktion zurückgegebenen Daten werden verarbeitet und dann angezeigt oder gedruckt. (Empfohlenes Lernen:
Der vom Swoole-Framework bereitgestellte RPC-Server unterstützt Funktionen wie die Parallelität einzelner Verbindungen und die Aufrechterhaltung langer Verbindungen unter PHP-FPM. In der groß angelegten Anwendung von Wheel Internet wurde eine serviceorientierte Architektur mit einer 4-Schichten-Architektur aufgebaut.
Viele Unternehmen verwenden Http Rest, um die RPC-Kommunikation zu implementieren. Die Implementierung ist einfach und kann viele vorgefertigte Tools und Lösungen nutzen. Das HTTP-Kommunikationsprotokoll weist jedoch zwei schwerwiegende Mängel auf. Http unterstützt nicht die Parallelität einzelner Verbindungen. Wenn Sie viele Anfragen gleichzeitig senden möchten, müssen Sie eine große Anzahl von TCP-Verbindungen erstellen. Wenn php-fpm 500 Prozesse startet und jedes Mal 128 Parallelitäten erfordert, müssen 64.000 TCP-Verbindungen erstellt werden. Http unterstützt lange Verbindungen nicht gut genug. Eine TCP-Verbindung wird erstellt, wenn eine Anfrage endet. Dies führt zu einem zusätzlichen Netzwerkkommunikationsverbrauch >Der RPC-Client des Swoole-Frameworks verwendet eine 16-Byte-Kommunikationsmethode mit festem Header + Paketkörper, unterstützt die Parallelität einzelner Verbindungen und unterstützt das Öffnen langer Verbindungen in PHP-FPM.PHP-FPM-Langverbindung
Die Aufrechterhaltung der TCP-Langverbindung in PHP-FPM hängt hauptsächlich von der SWOOLE_KEEP-Option ab, die von der Swoole-Erweiterung bereitgestellt wird, nachdem der Client festgelegt wurde Mit dieser Option wird die Verbindung nicht geschlossen, wenn die Anforderung endet, und die TCP-Verbindung kann nach dem Eintreffen neuer Anforderungen wiederverwendet werden. Darüber hinaus verfügt die unterste Ebene über eine integrierte Funktion zur Erkennung langer Verbindungen.
Beim Ausführen von $client->connect() wird automatisch erkannt, ob die Verbindung verfügbar ist. Wenn die wiederverwendete Verbindung abgelaufen ist, erstellt die unterste Ebene eine neue lange TCP-Verbindung.
Junk-Daten automatisch bereinigen, wenn $client->connect() ausgeführt wird, um Dienstausnahmen zu vermeiden, die durch Restdaten aus dem letzten Client-Timeout verursacht werden
$socket = new \swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP, WOOLE_SOCK_SYNC); $socket->set(array( 'open_length_check' => true, 'package_max_length' => $this->packet_maxlen, 'package_length_type' => 'N', 'package_body_offset' => RPCServer::HEADER_SIZE, 'package_length_offset' => 0, ));
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Swoole und RPC in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!