gRPC para PHP: bibliotecas, instalação e exemplos de implementação

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

gRPC para PHP: bibliotecas e exemplos de implementação



gRPC (gRPC Remote Procedure Calls) é um framework de alto desempenho para chamadas de procedimentos remotos, desenvolvido pelo Google. Ele utiliza Protocol Buffers (protobuf) como linguagem de descrição de interfaces e serialização de dados. Diferente do REST, o gRPC opera sobre HTTP/2, suporta streaming bidirecional e oferece tipagem estrita. Neste artigo, vamos abordar como conectar o gRPC em PHP, quais bibliotecas usar e escrever um exemplo completo de interação cliente-servidor.



Visão geral das bibliotecas para gRPC em PHP



Para trabalhar com gRPC em PHP, existem duas abordagens principais:



  • Extensão grpc.so — extensão C oficial do gRPC. Oferece desempenho máximo, mas requer compilação e configuração no servidor.
  • Cliente PHP puro (por exemplo, grpc/grpc via Composer) — implementação em PHP que funciona através de cURL e HTTP/2. Mais lento, porém mais fácil de implantar.


Para produção, recomenda-se usar a extensão grpc; para desenvolvimento ou testes, o cliente PHP puro.



Instalação dos componentes necessários



1. Instalação do protoc e do plugin para PHP



Baixe o compilador protobuf do repositório oficial para o seu sistema operacional. Para gerar código PHP, será necessário o plugin protoc-gen-php-grpc:



# Instalação do 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

# Instalação do plugin para gRPC PHPsudo apt-get install php-dev php-cli php-pearsudo pecl install grpcsudo pecl install protobuf


2. Instalação das dependências do Composer



Crie um projeto e adicione os pacotes necessários:



composer initcomposer require grpc/grpccomposer require google/protobuf


Criação do arquivo .proto



Vamos definir um serviço simples para trabalhar com usuários. Crie o arquivo 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 {}


Geração de código PHP a partir do .proto



Execute o comando para compilar o .proto em classes PHP:



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


Na pasta generated, aparecerão os arquivos:

  • GPBMetadata/User.php — metadados do arquivo proto
  • User/UserRequest.php — classe de requisição
  • User/UserResponse.php — classe de resposta
  • User/UserServiceClient.php — cliente para chamar o serviço


Implementação do servidor gRPC em PHP



Para a parte do servidor, use a extensão oficial grpc. Crie o arquivo 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