laelaps/symfony-gearman-bundle
Symfony bundle that integrates the Gearman job queue into your application. Configure servers, register workers and clients as services, dispatch background jobs, and handle results through a clean, framework-native API.
Architecture fit — mismatch to flag up front: This is a Symfony bundle, not a Laravel package. Bundles rely on Symfony's Bundle class, Extension::load(), Configuration trees, and compiler passes. Laravel has no bundle loader — it consumes Symfony components, not bundles. There is no path to composer require + auto-discovery in a Laravel app; integration means rewriting the wiring layer in Laravel idioms (service provider + config file), at which point the package contributes almost nothing beyond a reference implementation. The 1.0.0 release does not change this — a major version number does not turn a bundle into a Laravel package.
What is actually reusable: Very little. The bundle's substance is (a) DI service definitions for a Gearman client/worker, (b) a config tree for server/worker options, (c) a couple of console commands. The real work is performed by the PECL gearman extension or an underlying PHP client — both of which can be used directly.
Integration feasibility: Low. A shim would be more code and more risk than a clean-room Laravel service provider wrapping a Gearman client.
Technical risk — high (unchanged by 1.0.0):
1.x is deliberately maintained as PHP 5.3 compatible, and the actively developed 2.x branch is expected to require PHP 5.5. There is no branch targeting PHP 7.x or 8.x on the roadmap as stated. The 1.0.0 milestone is a branch-strategy announcement, not a modernization.::class in the target idiom set. Even the "new features and different API" branch lands a full major version below our runtime baseline.1.x, the 2.x rewrite (PHP 5.5, "different API") is a second port. Committing to this codebase means committing to a moving target whose movement is backwards relative to our stack.composer require scan to read this as production-ready; it is not.gearman/gearmand and PECL gearman have had minimal activity for years, and compiling the C extension against modern PHP builds is a recurring friction point.Key questions for the team:
gearmand in production, or is this greenfield? (If greenfield: do not adopt.)ext-gearman, or does it wrap a pure-PHP client? This determines whether we inherit a C-extension build dependency.addScope, old Definition signatures, Reference handling), or does it retain them? If retained, the porting cost is unchanged by the rewrite.Stack fit: Target is presumably Laravel 10/11 on PHP 8.1+. Both upstream branches are below that floor by a full decade (1.x = PHP 5.3, 2.x = PHP 5.5) and target Symfony 2.x-era container APIs that no longer exist. Laravel's Symfony components are many major versions ahead; the container APIs the bundle calls do not exist in current Symfony. Version skew is not bridgeable.
Options, ranked:
gearmand daemon, the C extension, and this package in one move. Only exception: a hard constraint that an existing Gearman cluster must be consumed.Compatibility gaps to expect: no Laravel package discovery, no publishable config, no facades, no illuminate/support integration, no test suite runnable on modern PHP. The 1.0.0 release adds nothing to this list and removes nothing.
Sequencing:
gearmand and/or PECL gearman build and run on our target PHP version and base image. This kills most adoptions; do it before any design work.Maintenance: Effectively zero upstream for our stack. We own the code from the first commit. The 1.0.0 announcement confirms upstream's effort is directed at legacy PHP compatibility and a 2.x API rewrite — neither reduces our maintenance load, and the 2.x divergence guarantees we cannot track upstream even opportunistically. Budget a named maintainer and a fork under our org, or accept this as tech debt with a documented exit.
Support: No community, no issue triage, no security response. A CVE in the extension or daemon lands on us with no upstream patch path. 0 dependents means we cannot borrow fixes from anyone. A PHP 5.3-compatible branch is structurally unlikely to receive security hardening.
Scaling: Gearman scales horizontally by adding worker processes — mechanically fine. The burden is the gearmand daemon itself: a stateful, separately-operated service with no managed offering on AWS/GCP/Azure. That is a permanent ops line item (HA, upgrades, monitoring, backups of the persistent queue if used) that a Redis/SQS alternative does not carry.
Failure modes to instrument for:
gearmand restart unless the persistent queue backend is configured and tested.Ramp-up: Low for the queue concept, high for this specific implementation. Any engineer can learn Gearman in an afternoon; debugging the bundle's internals plus a PECL extension on a modern PHP build is a multi-day exercise with no documentation. The 1.0.0 release adds a new onboarding hazard: new hires will see a 1.0.0 tag, assume stability, and read the version as current — the branch story (1.x = PHP 5.3, 2.x = PHP 5.5) must be documented alongside the exception so the tag is not mistaken for viability.
Bottom line: The 1.0.0 release is a branch-strategy announcement — 1.x stays PHP 5.3-compatible, 2.x targets PHP 5.5 — and it confirms rather than revises the prior read. Nudge the score down to 0.42: the version bump raises discoverability and false-positive adoption risk while the PHP floor moves further from our baseline, and the promised 2.x rewrite is still a major version below our runtime with no migration path. This remains a reference implementation, not a dependency. Recommend option 1 (replace the transport); fall back to option 2 (clean-room provider) only if an existing Gearman cluster is a hard constraint. Do not adopt the bundle as-is under any scenario, and do not treat 1.0.0 as a signal to re-evaluate until a branch targets PHP 8.x and current Symfony.
How can I help you explore Laravel packages today?