Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie RPC-Remoteaufrufe mit PHP und Swoole

So implementieren Sie RPC-Remoteaufrufe mit PHP und Swoole

PHPz
PHPzOriginal
2023-05-11 23:03:041296Durchsuche

So verwenden Sie PHP und Swoole, um RPC-Remoteaufrufe zu implementieren

RPC (Remote Procedure Call) ist ein Remote-Aufrufprotokoll, das es Anwendungen ermöglicht, Funktionsaufrufe auf verschiedenen Computern durchzuführen. RPC wird häufig zum Aufbau verteilter Systeme verwendet, wodurch verschiedene Microservices zusammenarbeiten können.

In der Welt von PHP und Swoole können wir RPC problemlos für Remote-Aufrufe verwenden, ohne uns zu sehr auf andere Bibliotheken von Drittanbietern verlassen zu müssen. In diesem Artikel erfahren Sie, wie Sie mit PHP und Swoole RPC-Remoteaufrufe implementieren.

  1. Swoole installieren

Zuerst müssen wir Swoole installieren, eine leistungsstarke Netzwerkkommunikations-Engine, die PHP unterstützt. Swoole kann zum Erstellen von Netzwerkanwendungen wie Webservern, RPC, SOA usw. verwendet werden.

Sie können Swoole mit dem folgenden Befehl installieren:

pecl install swoole
  1. Serverseitigen Code schreiben

Unsere erste Aufgabe besteht darin, einen RPC-Dienst zu erstellen, der auf Clientanfragen reagieren kann. Hier verwenden wir Swoole, um einen Server zu erstellen, der die Verbindungsanfragen des Clients abhören und die vom Client gesendeten Daten verarbeiten kann.

Zuerst erstellen wir eine server.php-Datei und verwenden dann den folgenden Code, um einen Swoole-Server zu erstellen:

<?php
$server = new SwooleServer('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);

In diesem Code erstellen wir einen TCP-Server, der die Adresse und den Port von 0.0.0.0:9501 abhören kann .

Als nächstes müssen wir auf Client-Verbindungsanfragen warten und für jeden Client eine Verbindung erstellen.

$server->on('Connect', function ($serv, $fd) {
    echo "Client {$fd} connected.
";
});

Dieser Code wird aufgerufen, wenn jeder Client eine Verbindung herstellt, und kann zur Bearbeitung neu verbundener Client-Anfragen verwendet werden. Hier geben wir einfach eine Nachricht aus.

Als nächstes müssen wir die vom Kunden gesendeten Daten abhören und seine Anfragen bearbeiten. Hier verwenden wir das JSON-Format zur Übermittlung von Daten.

$server->on('Receive', function ($serv, $fd, $from_id, $data) {
    $request = json_decode($data, true);
    if ($request['method'] == 'ping') {
        $response = array('success' => true, 'message' => 'pong');
    } else {
        $response = array('success' => false, 'message' => 'invalid method');
    }
    $serv->send($fd, json_encode($response));
});

Dieser Code kann die Anfrage im JSON-Format analysieren und dann feststellen, ob die Anfragemethode Ping ist. Wenn ja, wird eine Antwort mit dem Namen „pong“ zurückgegeben. Andernfalls wird eine Fehlerantwort mit dem Namen „ungültige Methode“ zurückgegeben.

Zuletzt müssen wir den Server starten und auf Clientanfragen warten.

$server->start();
  1. Client-Code schreiben

Jetzt haben wir einen RPC-Server erstellt, der auf Client-Anfragen reagieren kann. Als nächstes müssen wir einen einfachen PHP-Client schreiben, um zu testen, ob der RPC-Dienst ordnungsgemäß funktioniert.

Hier führen wir das Client-Skript im Befehlszeilenmodus aus und verwenden die integrierte Socket-Bibliothek von PHP, um Anfragen an den Server zu senden.

Zuerst müssen wir eine client.php-Datei erstellen und dann den folgenden Code verwenden, um eine Verbindung zum Server herzustellen und die Anfrage zu senden.

<?php
$client = stream_socket_client('tcp://127.0.0.1:9501', $errno, $errmsg, 3);
$request = array('method' => 'ping');
fwrite($client, json_encode($request));
$response = stream_get_contents($client);
echo $response . PHP_EOL;

In diesem Code verwenden wir die Funktion stream_socket_client, um eine Verbindung zum Server herzustellen und eine Ping-Anfrage an den Server zu senden. Anschließend lesen wir die Antwort des Servers und geben sie aus.

Jetzt können wir das Client-Skript ausführen und die Konsolenausgabe überprüfen. Wenn alles gut geht, sollten wir eine Ausgabe wie „{'success':true,'message':'pong'}" sehen können.

  1. Zusammenfassung

In diesem Artikel haben wir gelernt, wie man RPC-Remote-Aufrufe mit PHP und Swoole implementiert. Wir haben einen einfachen RPC-Server erstellt, der Client-Anfragen verarbeiten kann, und außerdem einen einfachen PHP-Client geschrieben, um zu testen, ob der RPC-Dienst ordnungsgemäß funktioniert.

Natürlich ist dies nur ein kleiner Teil eines vollständigen RPC-Systems. Weitere Informationen zu RPC finden Sie in der Swoole-Dokumentation.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie RPC-Remoteaufrufe mit PHP 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