gRPC pour PHP : bibliothèques, installation et exemples d'implémentation

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

gRPC pour PHP : bibliothèques et exemples d'implémentation



gRPC (gRPC Remote Procedure Calls) est un framework haute performance pour l'appel de procédures à distance, développé par Google. Il utilise Protocol Buffers (protobuf) comme langage de description d'interfaces et de sérialisation des données. Contrairement à REST, gRPC fonctionne sur HTTP/2, prend en charge le streaming bidirectionnel et assure un typage strict. Dans cet article, nous verrons comment intégrer gRPC en PHP, quelles bibliothèques utiliser, et nous écrirons un exemple complet d'interaction client-serveur.



Aperçu des bibliothèques pour gRPC en PHP



Pour travailler avec gRPC en PHP, deux approches principales sont disponibles :



  • L'extension grpc.so — l'extension C officielle de gRPC. Elle offre des performances maximales, mais nécessite une compilation et une configuration sur le serveur.
  • Le client PHP pur (par exemple, grpc/grpc via Composer) — une implémentation en PHP fonctionnant via cURL et HTTP/2. Plus lent, mais plus simple à déployer.


Pour la production, il est recommandé d'utiliser l'extension grpc, et pour le développement ou les tests, le client PHP pur.



Installation des composants nécessaires



1. Installation de protoc et du plugin pour PHP



Téléchargez le compilateur protobuf depuis le dépôt officiel pour votre système d'exploitation. Pour générer du code PHP, vous aurez besoin du plugin protoc-gen-php-grpc :



# Installation de protoc (Linux)wget https://github.com/protocolbuffers/protobuf/releases/download/v25.0/protoc-25.0-linux-x86_64.zipunzip protoc-25.0-linux-x86_64.zip -d /usr/local/protocexport PATH=$PATH:/usr/local/protoc/bin

# Installation du plugin pour gRPC PHPsudo apt-get install php-dev php-cli php-pearsudo pecl install grpcsudo pecl install protobuf


2. Installation des dépendances Composer



Créez un projet et ajoutez les paquets nécessaires :



composer initcomposer require grpc/grpccomposer require google/protobuf


Création du fichier .proto



Définissons un service simple pour travailler avec les utilisateurs. Créez le fichier user.proto :



syntax = "proto3";

package user;

service UserService { rpc GetUser (UserRequest) returns (UserResponse); rpc ListUsers (Empty) returns (stream UserResponse);}

message UserRequest { int32 id = 1;}

message UserResponse { int32 id = 1; string name = 2; string email = 3;}

message Empty {}


Génération du code PHP à partir de .proto



Exécutez la commande pour compiler le fichier .proto en classes PHP :



protoc --php_out=./generated --grpc_out=./generated \       --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin \       user.proto


Dans le dossier generated, les fichiers suivants apparaîtront :

  • GPBMetadata/User.php — métadonnées du fichier proto
  • User/UserRequest.php — classe de requête
  • User/UserResponse.php — classe de réponse
  • User/UserServiceClient.php — client pour appeler le service


Implémentation du serveur gRPC en PHP



Pour la partie serveur, utilisez l'extension officielle grpc. Créez le fichier server.php :



<?phprequire_once __DIR__ . '/vendor/autoload.php';require_once __DIR__ . '/generated/User/UserServiceInterface.php';require_once __DIR__ . '/generated/User/UserServiceServer.php';

use Grpc\\Server;use User\\UserRequest;use User\\UserResponse;use User\\UserServiceServer;

class MyUserService extends UserServiceServer{ public function GetUser(\\User\\UserRequest $request): \\User\\UserResponse { $response = new UserResponse(); $response->setId($request->getId()); $response->setName('John Doe'); $response->setEmail('john@exa

Recommendations