gRPC para PHP: bibliotecas, instalação e exemplos de código

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



gRPC é um framework moderno e de alto desempenho para chamadas de procedimentos remotos (RPC), desenvolvido pelo Google. Ele utiliza HTTP/2 para transporte, Protocol Buffers (protobuf) para serialização de dados e suporta várias linguagens, incluindo PHP. Neste artigo, vamos abordar como conectar gRPC a um projeto PHP, quais bibliotecas são necessárias e escrever um exemplo funcional de interação cliente-servidor.



Por que usar gRPC em PHP?

APIs REST tradicionais geralmente funcionam com JSON e HTTP/1.1, o que leva à redundância de dados e serialização lenta. O gRPC resolve esses problemas:

  • Protocolo binário — protobuf ocupa menos espaço que JSON e é processado mais rapidamente.
  • HTTP/2 — multiplexação, compressão de cabeçalhos, transmissão por streaming.
  • Tipagem forte — contratos são descritos em arquivos .proto, simplificando o desenvolvimento e a depuração.
  • Streaming bidirecional — servidor e cliente podem trocar dados de forma assíncrona.


Principais bibliotecas para gRPC em PHP

Para trabalhar com gRPC em PHP, são necessários dois componentes:

  • grpc.so — extensão PHP (extensão C) que implementa HTTP/2 e o protocolo gRPC.
  • protobuf.so — extensão para serialização protobuf (alternativa: pacote PHP puro google/protobuf).
  • Pacotes Composer: grpc/grpc e google/protobuf.


A forma recomendada de instalação é via PECL (extensões) e Composer (dependências).



Instalação do gRPC e protobuf

Para servidores Linux (Ubuntu/Debian):

# Instalar extensões via PECLsudo pecl install grpcsudo pecl install protobuf

# Adicionar ao php.iniecho "extension=grpc.so" >> /etc/php/8.2/cli/php.iniecho "extension=protobuf.so" >> /etc/php/8.2/cli/php.ini


Para Windows, baixe os arquivos DLL do PECL e adicione-os ao php.ini.



Em seguida, instale as bibliotecas via Composer:

composer require grpc/grpccomposer require google/protobuf


Criação do arquivo .proto

Vamos descrever um serviço 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 (UserList);}

message UserRequest { int32 id = 1;}

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

message Empty {}

message UserList { repeated UserResponse users = 1;}


Geração de classes PHP a partir do .proto

Instale o protoc e o plugin para PHP:

# Baixe o protoc em https://github.com/protocolbuffers/protobuf/releases# Em seguida, gere o código:protoc --php_out=./generated --grpc_out=./generated --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin user.proto


Na pasta generated, aparecerão as classes: UserRequest, UserResponse, UserServiceClient, entre outras.



Exemplo de servidor gRPC em PHP

Vamos criar um servidor que responderá às requisições. Arquivo server.php:

require_once __DIR__ . '/vendor/autoload.php';require_once __DIR__ . '/generated/UserServiceServer.php';

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

class MyUserService extends UserServiceServer{ public function GetUser(\\Grpc\\ServerCallReader $request, \\Grpc\\ServerCallWriter $response, \\Grpc\\ServerContext $context): void { $req = $request->read(); $id = $req->getId();

$user = new UserResponse(); $user->setId($id); $

Recommendations