Weave 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

Symfony Gearman Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.0.0 release notes confirm the worst reading: branch 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.
  • Concretely: PHP 5.3/5.5 floors mean no scalar type hints, no return types, no null-coalescing, no ::class in the target idiom set. Even the "new features and different API" branch lands a full major version below our runtime baseline.
  • The 2.x branch introduces API churn with no migration guide. If we ported anything from 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.
  • Prior release lineage was 2013-08-12-era, targeting Symfony 2.x and PHP 5.3–5.5 idioms; likely PSR-0 autoloading. 14 stars, 0 dependents — no downstream usage to surface upgrade paths, no forks validating modern PHP. The 1.0.0 tag may cause a naive composer require scan to read this as production-ready; it is not.
  • Upstream ecosystem is stagnant: 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.
  • MIT license is clean — this is a technical/strategic risk, not a legal one.

Key questions for the team:

  1. Do we already run gearmand in production, or is this greenfield? (If greenfield: do not adopt.)
  2. Does the package require ext-gearman, or does it wrap a pure-PHP client? This determines whether we inherit a C-extension build dependency.
  3. Are persistent connections, worker timeouts, and graceful shutdown handled by the bundle or left to us?
  4. New: Given 1.x is pinned to PHP 5.3 and 2.x to PHP 5.5, is there any upstream intent to reach PHP 8.x, or is our integration permanently forked from upstream?
  5. New: Does 2.x fix the Symfony-2-era container calls (addScope, old Definition signatures, Reference handling), or does it retain them? If retained, the porting cost is unchanged by the rewrite.
  6. Is there an active fork, or are we the maintainers from day one?

Integration Approach

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:

  1. Replace the transport (recommended). If the requirement is "background jobs," use Redis/SQS + Laravel Horizon or Laravel's native queue. Removes the gearmand daemon, the C extension, and this package in one move. Only exception: a hard constraint that an existing Gearman cluster must be consumed.
  2. Clean-room Laravel provider over a maintained client. If Gearman is non-negotiable, write a ~200-line service provider + config file wrapping a Gearman client directly. Cheaper than porting the bundle and yields typed, tested, PHP 8-clean code we own.
  3. Fork and port the bundle. Only justified if the bundle contains nontrivial logic (worker lifecycle, retry semantics) we'd otherwise re-derive. Read the source first — at 14 stars and this age, expect thin wiring, not substance. Note: the 1.x/2.x split means a fork must declare which branch it tracks, and upstream 2.x's "different API" will not be mergeable.

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:

  • Step 1 (½ day): Read the source. Determine ext dependency and actual LOC of business logic. This is a go/no-go gate.
  • Step 2 (1 day): Environment spike — confirm 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.
  • Step 3 (1 day): Confirm whether the Gearman requirement is real or inherited. Escalate if it is inherited.
  • Step 4 (2–3 days): If proceeding, build an internal package (provider + config + tests) — do not vendor the bundle.
  • Step 5: Introduce behind an interface so the transport remains swappable.

Operational Impact

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:

  • Worker starvation — jobs enqueue, nothing consumes, no built-in alerting.
  • No native retry or dead-letter — failed jobs vanish unless the bundle adds semantics; verify before trusting it.
  • Job loss on gearmand restart unless the persistent queue backend is configured and tested.
  • Blocking clients without timeouts — a stalled worker can hang a web request; must enforce timeouts at the call site.
  • Silent extension failures — segfaults and deserialization mismatches surface as dropped jobs, not exceptions.
  • PHP-FPM worker leaks in long-running consumer processes.

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.

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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console