roadrunner/grpc
RoadRunner gRPC lets you build high-performance gRPC services in PHP on the RoadRunner application server. It combines protobuf-generated stubs with persistent workers, supports unary and streaming RPCs, and avoids per-request bootstrap overhead for fast, production-ready microservices.
Consider it when:
.proto files, a schema registry or versioning discipline, and teams that understand protobuf.Look elsewhere when:
ext-grpc PHP extension (or a Go/Node sidecar) is the conventional path; this package will not help you.Diligence checklist before adopting: confirm compatibility with your RoadRunner and PHP versions; check release cadence against your support window; review whether the gRPC plugin is bundled in your RoadRunner build; and run a timeboxed spike against one real service boundary before committing it to the architecture.
For executives (one paragraph): This is a small, MIT-licensed integration library that lets our PHP services speak gRPC — the high-performance RPC protocol used by most modern microservice platforms — through RoadRunner, the application server we would run PHP on. Strategically, it means we can keep our PHP investment and still interoperate with services written in Go, Java, or Python, instead of re-platforming parts of the product. The cost is low (no license fee) but so is the adoption: it's a niche package with a thin community, so I'd recommend a bounded pilot on one internal service boundary rather than a company-wide standard, with an explicit owner for upgrades and a fallback plan.
For engineering (summary): The RoadRunner gRPC SDK gives us generated protobuf clients and servers that run inside RoadRunner's persistent worker model — non-blocking, high-concurrency, and a better fit for our runtime than the blocking ext-grpc extension. It's a thin bridge, not a framework: it assumes RoadRunner is present, assumes .proto contracts are managed somewhere sensible, and assumes we're comfortable debugging at the HTTP/2 layer. The trade-off is maturity — small star count, no dependents, and a single-maintainer risk profile — so we should pin versions, vendor the dependency if practical, add a contract test suite around our first service, and treat RoadRunner compatibility as a tracked upgrade item each release cycle. Success criteria for the pilot: one real cross-service call path in production, measurable latency improvement or streaming capability we couldn't get otherwise, and no more than a defined maintenance budget per quarter.
How can I help you explore Laravel packages today?