mmoreram/gearman-bundle
Mmoreram GearmanBundle integrates Gearman with Symfony to run background jobs and asynchronous tasks. It helps define workers, manage job queues, and dispatch work from your PHP application using simple configuration and service-based worker definitions.
Architecture fit
Mmoreram\GearmanBundle\GearmanBundle), consumed through Symfony's kernel, bundle discovery, DI compiler passes, and annotation-driven job/worker registration. Laravel has no bundle-loading concept: there is no service provider, no publishable config, no facade. Installing it into a Laravel app yields autoloadable classes and nothing wired up.doctrine/annotations 2.0) plus a refactor to fit that library's API. It does not add a Laravel service provider, PHP 8 attribute support, or any framework-agnostic entry point — the registration model remains annotation-reader-driven, which is precisely the part that ties it to a Symfony-style container.ext-gearman (GearmanClient / GearmanWorker), a PECL extension wrapping libgearman. It is not Composer-installable, so every container, CI runner, and developer laptop must ship the C library plus the extension. That constraint propagates through the whole architecture and is untouched by this release.Integration feasibility
composer require + register: still not feasible without a Symfony kernel in the process.doctrine/annotations ^2.0 creates a hard conflict with any application still resolving doctrine/annotations 1.x, and that library is a common transitive dependency. A Laravel app that merely installs the package to "look at it" can now fail dependency resolution for reasons unrelated to Gearman.ext-gearman behind a thin, Laravel-idiomatic wrapper.Technical risk
gearmand release predates PHP 8 and modern container practice. No TLS, no auth, no durable queue — jobs live in daemon memory.work() loops must be empirically validated, not assumed.doctrine/annotations 2.x. That library is itself deprecated upstream in favour of native PHP 8 attributes, and 2.0 is effectively a terminal major line — so the annotation-parsing path this bundle depends on is on a deprecation trajectory with no vendor forward path. The maintainers have modernized the dependency, not the mechanism.Key questions
doctrine/annotations 2.0 compatibility fix? The changelog suggests the latter.doctrine/annotations ^2.0 constraint conflict with anything already resolved in our application's lockfile?gearmand build are we standardizing on?Stack fit
Queue/Job contracts; the code does not map at all.ConnectorInterface + a Queue implementation) backed by ext-gearman, with this bundle used purely as a design reference. The 2.0 annotations refactor actually helps slightly here: it is a cleaner read of the parsing logic to port from.Migration path
ext-gearman into a PHP 8.x image, stand up gearmand, prove a submit/execute round trip, measure crash behaviour — and confirm the package's doctrine/annotations ^2.0 constraint does not collide with our lockfile.GearmanServiceProvider with a config/gearman.php, removing all Symfony imports and — critically — replacing the annotation reader with PHP 8 attributes so we do not inherit the deprecated path.Compatibility
doctrine/annotations 2.x, so a Laravel app pulls a second, partially overlapping container abstraction plus a version-pinned deprecated annotation library. Class-name collisions are unlikely; container-semantics collisions are guaranteed.ext-gearman must exist in every environment that runs workers — a Dockerfile and CI change across the estate, not a one-off.gearmand speaks its own binary protocol; client version skew (1.0 vs 1.1) is a real and under-documented failure source.Sequencing
Maintenance
gearmand remains a daemon you build, patch, and CVE-watch yourself, with no vendor support.Support
Scaling
gearmand is largely single-node and in-memory, with no native clustering or replication. Scaling means manually sharding job servers or inserting a proxy layer; this is the architecture's ceiling and no release in this line addresses it.Failure modes
work() loops can hang without heartbeats. No built-in retry or dead-letter semantics — retry logic is hand-rolled per job class.ext-gearman segfaults take down the worker process; under naive supervisor config this presents as a crash loop that looks like application failure.Ramp-up
ext-gearman plus this bundle's semantics; 2–3 weeks before they can operate it under incident.TPM recommendation
doctrine/annotations 2.0 compatibility release: no new capability, no Laravel surface, no architectural modernization, and a slightly tighter Composer coupling to a deprecated library. The core architectural mismatch and the end-of-life-adjacent runtime substrate are unchanged.How can I help you explore Laravel packages today?