gRPC para PHP: bibliotecas, instalación y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

gRPC para PHP: bibliotecas y ejemplos



gRPC es un framework moderno de alto rendimiento para llamadas a procedimientos remotos (RPC), desarrollado por Google. Utiliza HTTP/2 para el transporte, Protocol Buffers (protobuf) para la serialización de datos y admite múltiples lenguajes, incluido PHP. En este artículo, veremos cómo conectar gRPC a un proyecto PHP, qué bibliotecas son necesarias y escribiremos un ejemplo funcional de interacción cliente-servidor.



¿Por qué es necesario gRPC en PHP?

Las API REST tradicionales a menudo funcionan con JSON y HTTP/1.1, lo que genera redundancia de datos y serialización lenta. gRPC resuelve estos problemas:

  • Protocolo binario — protobuf ocupa menos espacio que JSON y se procesa más rápido.
  • HTTP/2 — multiplexación, compresión de encabezados, transmisión por flujos.
  • Tipado estricto — los contratos se describen en archivos .proto, lo que simplifica el desarrollo y la depuración.
  • Transmisión bidireccional por flujos — el servidor y el cliente pueden intercambiar datos de forma asíncrona.


Bibliotecas principales para gRPC en PHP

Para trabajar con gRPC en PHP se necesitan dos componentes:

  • grpc.so — extensión de PHP (extensión C) que implementa HTTP/2 y el protocolo gRPC.
  • protobuf.so — extensión para la serialización de protobuf (alternativa: el paquete PHP puro google/protobuf).
  • Paquetes de Composer: grpc/grpc y google/protobuf.


La forma recomendada de instalación es a través de PECL (extensiones) y Composer (dependencias).



Instalación de gRPC y protobuf

Para servidores Linux (Ubuntu/Debian):

# Instalamos las extensiones a través de PECLsudo pecl install grpcsudo pecl install protobuf

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


Para Windows, descargue los archivos DLL desde PECL e indíquelos en php.ini.



A continuación, instalamos las bibliotecas a través de Composer:

composer require grpc/grpccomposer require google/protobuf


Creación del archivo .proto

Describamos un servicio para trabajar con usuarios. Cree el archivo 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;}


Generación de clases PHP a partir de .proto

Instale protoc y el plugin para PHP:

# Descargue protoc desde https://github.com/protocolbuffers/protobuf/releases# Luego genere el código:protoc --php_out=./generated --grpc_out=./generated --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin user.proto


En la carpeta generated aparecerán las clases: UserRequest, UserResponse, UserServiceClient, entre otras.



Ejemplo de servidor gRPC en PHP

Creemos un servidor que responda a las solicitudes. Archivo 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