Comment implémenter les appels à distance RPC en utilisant PHP et Swoole

PHPz
Libérer: 2023-05-12 06:02:02
original
1278 Les gens l'ont consulté

Comment utiliser PHP et Swoole pour implémenter les appels à distance RPC

RPC (Remote Procedure Call) est un protocole d'appel à distance qui permet aux applications d'effectuer des appels de fonctions sur différents ordinateurs. RPC est souvent utilisé pour créer des systèmes distribués, ce qui permet à différents microservices de fonctionner ensemble.

Dans le monde de PHP et Swoole, nous pouvons facilement utiliser RPC pour passer des appels à distance sans trop compter sur d'autres bibliothèques tierces. Cet article vous expliquera comment utiliser PHP et Swoole pour implémenter les appels à distance RPC.

  1. Installer Swoole

Tout d'abord, nous devons installer Swoole, un moteur de communication réseau haute performance qui prend en charge PHP. Swoole peut être utilisé pour créer des applications réseau, telles que des serveurs Web, RPC, SOA, etc.

Vous pouvez installer Swoole via la commande suivante :

pecl install swoole
Copier après la connexion
  1. Écrire le code du serveur

Notre première La première tâche consiste à créer un service RPC capable de répondre aux demandes des clients. Ici, nous utilisons Swoole pour créer un serveur capable d'écouter la demande de connexion du client et de traiter les données envoyées par le client.

Tout d'abord, nous créons un fichier server.php, puis utilisons le code suivant pour créer un serveur Swoole :

<?php
$server = new SwooleServer('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
Copier après la connexion

Dans ce code, nous créons un serveur TCP, vous peut écouter l'adresse et le port 0.0.0.0:9501.

Ensuite, nous devons écouter les demandes de connexion des clients et créer une connexion pour chaque client.

$server->on('Connect', function ($serv, $fd) {
    echo "Client {$fd} connected.
";
});
Copier après la connexion

Ce code sera appelé lorsque chaque client se connectera et pourra être utilisé pour gérer les demandes des clients nouvellement connectés. Ici, nous générons simplement un message.

Ensuite, nous devons écouter les données envoyées par le client et traiter ses demandes. Ici, nous utilisons le format JSON pour transmettre les données.

$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));
});
Copier après la connexion

Ce code peut analyser la requête au format JSON, puis déterminer si la méthode de requête est ping. Si c'est le cas, renvoyez une réponse nommée « pong » ; sinon, renvoyez une réponse nommée « méthode invalide ». réponse à l'erreur.

Enfin, nous devons démarrer le serveur et commencer à écouter les demandes des clients.

$server->start();
Copier après la connexion
  1. Écriture du code client

Maintenant, nous avons créé un serveur RPC capable de répondre aux demandes des clients. Ensuite, nous devons écrire un simple client PHP pour tester si le service RPC fonctionne correctement.

Ici, nous exécutons le script client en mode ligne de commande et utilisons la bibliothèque de sockets intégrée de PHP pour envoyer des requêtes au serveur.

Tout d'abord, nous devons créer un fichier client.php, puis utiliser le code suivant pour nous connecter au serveur et envoyer une requête.

<?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;
Copier après la connexion

Dans ce code, nous utilisons la fonction stream_socket_client pour nous connecter au serveur et envoyer une requête ping au serveur. Nous lisons ensuite la réponse du serveur et la publions.

Maintenant, nous pouvons exécuter le script client et vérifier la sortie de la console. Si tout se passe bien, nous devrions pouvoir voir un résultat comme "{'success':true,'message':'pong'}".

  1. Summary

Dans cet article, nous avons appris comment implémenter des appels à distance RPC à l'aide de PHP et Swoole. Nous avons créé un simple serveur RPC capable de gérer les demandes des clients, et avons également écrit un simple client PHP pour tester si le service RPC fonctionne correctement.

Bien sûr, ceci n'est qu'une petite partie d'un système RPC complet. Vous pouvez vous référer à la documentation Swoole pour en savoir plus sur RPC.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!