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
Consul Php Sdk

Consul Php Sdk Laravel Package

friendsofphp/consul-php-sdk

PHP SDK for HashiCorp Consul by FriendsOfPHP. Provides a clean API client to interact with Consul’s HTTP endpoints—service discovery, KV store, health checks, sessions, ACL, and agent/catalog operations—usable in any PHP app or framework.

View on GitHub
Deep Wiki
Context7

PHP Consul SDK

Frequently asked questions about Consul Php Sdk
How do I install this Consul PHP SDK in a Laravel project?
Run `composer require friendsofphp/consul-php-sdk` in your Laravel project. The package doesn’t require Laravel-specific setup, but you’ll typically initialize it via a Service Provider or Facade for consistency. For example, bind the client in `register()` and use it in `boot()` for service discovery. No Laravel-specific dependencies are needed.
Does this SDK support Laravel’s service container and Facades?
Yes, the SDK integrates natively with Laravel’s service container. You can bind the Consul client in a Service Provider’s `register()` method and use Facades (e.g., `Consul::agent()->checks()`) in your code. This follows Laravel’s conventions for third-party SDKs. For Lumen, use a lighter binding approach.
What Laravel versions and PHP versions are officially supported?
The SDK is designed for PHP 8.2+ and works best with Laravel 10+. While it may work with older Laravel versions (e.g., 9.x) or PHP 8.1, you’ll need to test compatibility manually, especially for newer Consul API features. The package assumes modern Laravel’s dependency injection patterns.
Can I use Consul’s KV store as a cache backend for Laravel?
Yes, you can use the KV store as a distributed cache backend, but it’s not a drop-in replacement for Laravel’s cache facade. You’ll need to implement custom logic for cache tags, TTL handling, and invalidation. For production, consider caching frequently accessed KV data locally (e.g., via Laravel’s cache facade) to reduce Consul API calls.
How do I handle Consul API failures or downtime in Laravel?
The SDK doesn’t include built-in retry logic, but you can wrap Consul calls in Laravel’s `try-catch` blocks or use a package like `spatie/retries` for exponential backoff. For critical failures, implement fallback mechanisms (e.g., local config files or Redis) until Consul is restored. Monitor health checks via Laravel’s monitoring tools (e.g., Horizon or Sentry).
Is this SDK suitable for service discovery in Laravel microservices?
Absolutely. Use the Catalog API to register Laravel services (e.g., `api`, `queue-worker`) and query them dynamically. Integrate health checks with load balancers like Nginx or Traefik. For advanced use cases, combine with Consul Connect for service mesh features. The SDK simplifies service registration compared to manual HTTP requests.
How does this compare to using Consul’s HTTP API directly in Laravel?
This SDK abstracts Consul’s HTTP API into a clean, object-oriented interface, reducing boilerplate and improving readability. It handles serialization, error responses, and API versioning automatically. Direct HTTP calls give you more control but require manual error handling and API version management. The SDK is ideal for most Laravel integrations.
Can I use this SDK with Laravel Horizon for job queue coordination?
Yes, you can use Consul’s KV store or sessions to coordinate distributed workers in Horizon. For example, store job queue metadata (e.g., leader election tokens) in KV or use sessions for temporary locks. This is useful for multi-process worker setups. Ensure your KV store TTLs align with Horizon’s job lifecycle.
What are the performance implications of using Consul for KV storage in Laravel?
Consul’s KV store is optimized for low-latency reads/writes, but network latency and API call overhead may impact performance. For high-frequency operations (e.g., per-request config), cache responses locally (e.g., via Laravel’s cache facade) and sync periodically. Monitor Consul’s API response times and adjust TTLs to balance consistency and performance.
Is there a recommended way to test this SDK in a Laravel CI pipeline?
Use Docker or a local Consul instance (e.g., `consul local dev-server`) in your CI pipeline to avoid external dependencies. Mock the Consul client in unit tests using Laravel’s `Mockery` or `PHPUnit` to isolate logic. For integration tests, spin up a Consul container and verify service registration, KV operations, and health checks. Avoid hitting production Consul in tests.
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.
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor