Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Gax Laravel Package

google/gax

Google API Core for PHP (gax-php) provides shared components used by generated Google Cloud API clients, including gRPC-based call handling, retries, timeouts, and page streaming. Designed for PHP 8.1+ and Google API conventions; most users won’t call it directly.

View on GitHub
Deep Wiki
Context7

Google API Core for PHP

Frequently asked questions about Gax
Can I use **google/gax** directly in Laravel, or is it only for Google Cloud client libraries?
While **google/gax** isn’t designed for direct Laravel integration, it powers generated Google Cloud PHP clients (e.g., Firestore, Pub/Sub). You’ll typically use it indirectly via these clients, but its retry, streaming, and gRPC utilities can be leveraged in custom services for high-performance APIs. For REST APIs, stick with Guzzle.
What Laravel versions does **google/gax** support?
**google/gax** itself requires PHP 8.1+, but Laravel compatibility depends on the Google Cloud client libraries built on top of it. Most Google Cloud clients (e.g., Firestore) support Laravel 8+ and 9+. Always check the client library’s docs for Laravel-specific notes, as they may include Laravel service providers or facades.
How do I install **google/gax** in a Laravel project?
Run `composer require google/gax` in your project root. However, you’ll also need the **grpc/grpc** PECL extension (`pecl install grpc`) and **google/protobuf** (`pecl install protobuf`). For Laravel, isolate these dependencies in a separate Composer package or namespace to avoid bloating your main app. CI/CD pipelines must include protobuf tooling setup.
Does **google/gax** work with REST APIs, or is it gRPC-only?
**google/gax** is primarily for gRPC, but it includes utilities like `InsecureRequestBuilder` for HTTP/JSON fallback. For REST APIs, use Guzzle or Laravel’s HTTP client instead. The package excels at gRPC-specific features like streaming, retries, and long-running operations—ideal for Google Cloud services with gRPC endpoints.
How do I handle retries and timeouts in Laravel with **google/gax**?
**google/gax** provides built-in retry logic aligned with Google API conventions (exponential backoff, deadlines). Configure retries via the client’s constructor or `RetrySettings`. For Laravel, wrap the client in a service class to centralize retry logic and log failures. Example: `$client = new FirestoreClient(['retrySettings' => new RetrySettings()]);`
Will **google/gax** work in production? Are there performance concerns?
**google/gax** is production-ready (GA stability) and optimized for gRPC performance. However, gRPC requires PECL extensions and may introduce latency if your infrastructure isn’t gRPC-optimized. Test with Google Cloud’s managed services (e.g., Cloud Run) or Kubernetes to avoid self-hosting gRPC servers. Monitor latency and retries via Laravel’s logging or third-party tools like Prometheus.
How do I debug gRPC errors from **google/gax** in Laravel?
**google/gax** throws `ApiException` with gRPC status codes (e.g., `UNAVAILABLE`, `DEADLINE_EXCEEDED`). Log these exceptions in Laravel’s `app/Exceptions/Handler.php` and map them to user-friendly messages. Use `->getStatus()` and `->getTrailers()` to inspect error details. For protobuf serialization issues, enable debug logging in the gRPC extension.
Are there alternatives to **google/gax** for gRPC in Laravel?
For gRPC in Laravel, alternatives include **grpc/grpc** (PECL extension) paired with custom protobuf-generated clients or libraries like **php-grpc**. However, **google/gax** is the *de facto* standard for Google Cloud APIs, offering retry, streaming, and protobuf utilities out of the box. For non-Google gRPC, consider **grpcio/grpc** (Python-style) or **reactphp/grpc**.
How do I integrate **google/gax** with Laravel’s service container?
**google/gax** doesn’t include Laravel bindings, so you’ll need to manually bind clients in `AppServiceProvider`. Example: `$this->app->bind(FirestoreClient::class, fn() => new FirestoreClient(['credentials' => $this->app['google.credentials']]));`. Use Laravel’s config files to centralize gRPC settings (e.g., retries, endpoints).
Can I use **google/gax** for real-time features like WebSockets or event streaming?
**google/gax** supports gRPC streaming (e.g., server-side streams for Pub/Sub), which is ideal for real-time data. Pair it with Laravel Echo or custom event handlers to bridge gRPC streams to Laravel’s event system. For WebSockets, use **beyondcode/laravel-websockets** alongside **google/gax** for hybrid real-time architectures.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope