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

Gearman Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is still a Symfony2 bundle (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.
  • v5.1.1 does not change this. The release is dependency housekeeping (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.
  • The reusable asset remains the domain logic (job definition parsing, worker dispatch loop, client wrapper), not the package as an installable unit. The honest framing is still "reference implementation to port," not "dependency to require."
  • Hard dependency on 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

  • Direct composer require + register: still not feasible without a Symfony kernel in the process.
  • The release marginally worsens coexistence at the Composer level: tightening to 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.
  • Realistic options, ranked, unchanged:
    1. Port the worker/job abstraction into a native Laravel service provider and custom queue driver.
    2. Skip the bundle; call ext-gearman behind a thin, Laravel-idiomatic wrapper.
    3. Run a standalone Symfony worker process beside Laravel, sharing only the Gearman protocol.
  • Option 3 remains the only path that uses the package as designed, and it adds a second framework runtime to the platform for a single queue integration. v5.1.1 does not reduce that tax.

Technical risk

  • Gearman itself remains effectively unmaintained; the last substantive gearmand release predates PHP 8 and modern container practice. No TLS, no auth, no durable queue — jobs live in daemon memory.
  • PECL extension cadence still lags PHP minors. PHP 8.3/8.4 support and segfault behaviour under blocking work() loops must be empirically validated, not assumed.
  • New in v5.1.1: the package now depends on 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.
  • Symfony2 origins persist: whether the current tag genuinely supports modern Symfony and PHP 8.x remains unverified from release notes alone. The changelog names a single library, not a support-matrix change — treat it as bugfix-plus-dependency-housekeeping, not a modern-Symfony compatibility statement.
  • Version numbering skipped v5.1.0 (5.0.1 → 5.1.1). Worth confirming there is no yanked or partial release behind that gap.
  • Adoption evidence remains thin: low star count and effectively no Packagist dependents. The new contributor is a modest positive maintenance signal, but the bus factor is still ~1.

Key questions

  • Is Gearman already mandated by an existing platform, or is it being introduced? If the latter, this is still the wrong default in 2025.
  • Does v5.1.1 declare or imply any change to the supported PHP/Symfony matrix, or is it strictly a doctrine/annotations 2.0 compatibility fix? The changelog suggests the latter.
  • Is there a roadmap to migrate annotation-based job registration to PHP 8 attributes, or is the annotation path accepted as frozen?
  • What was v5.1.0, and why was it not tagged in the changelog range?
  • Does the doctrine/annotations ^2.0 constraint conflict with anything already resolved in our application's lockfile?
  • What durability guarantee does the business need? Gearman cannot offer at-least-once across daemon restarts.
  • Which PHP version and which gearmand build are we standardizing on?

Integration Approach

Stack fit

  • Poor as a package, moderate as a pattern — unchanged by v5.1.1. The job-definition and worker-dispatch ideas map cleanly onto Laravel's Queue/Job contracts; the code does not map at all.
  • If Gearman is non-negotiable, the correct seat is still a custom Laravel queue driver (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

  1. Spike (1–2 days): build 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.
  2. Extract: lift job-registration and worker-loop semantics into a 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.
  3. Cutover: route one low-risk job class through the new driver behind a feature flag; compare throughput and latency against the incumbent queue.
  4. Decide: keep Gearman as an intentional niche, or retire it for Horizon / SQS / Symfony Messenger.

Compatibility

  • Composer-level: the package expects Symfony components and now 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.
  • Runtime-level: ext-gearman must exist in every environment that runs workers — a Dockerfile and CI change across the estate, not a one-off.
  • Protocol-level: gearmand speaks its own binary protocol; client version skew (1.0 vs 1.1) is a real and under-documented failure source.

Sequencing

  • Do not make this a platform-wide dependency. Scope to one bounded context, prove it, then decide. v5.1.1 is not a reason to accelerate or re-open the decision — it is routine upkeep.
  • If the underlying requirement is "durable, observable async work," the sequencing should instead be Horizon (if Redis is already present) or SQS, and this package should be closed without adoption.

Operational Impact

Maintenance

  • Solo-maintainer, MIT, low-adoption artifact. Bus factor is still effectively 1 — budget for a fork. v5.1.1 adds one first-time contributor on a single dependency bump; that is a pulse, not a succession plan.
  • Because it is Symfony-shaped and you are Laravel-shaped, you inherit the glue permanently and can never take a clean upstream update. A dependency-only release like this one still costs you a re-port if you forked the parsing logic.
  • gearmand remains a daemon you build, patch, and CVE-watch yourself, with no vendor support.

Support

  • No first-party support, no SLA, no commercial backing. Internal Gearman expertise is scarce in the hiring market.
  • Debugging is opaque: no Horizon-equivalent dashboard, no job introspection UI, no structured job metrics out of the box.

Scaling

  • Worker tier scales horizontally and trivially — Gearman's genuine strength.
  • The broker does not. 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.
  • No backpressure or rate-limiting primitives. One slow job class saturates a worker pool and stalls unrelated jobs unless you partition servers by function.

Failure modes

  • Job loss: daemon restart, OOM, or host failure drops every queued job. No persistence. Acceptable for cache warmers; unacceptable for orders or payments.
  • Silent worker death: blocking work() loops can hang without heartbeats. No built-in retry or dead-letter semantics — retry logic is hand-rolled per job class.
  • Extension faults: ext-gearman segfaults take down the worker process; under naive supervisor config this presents as a crash loop that looks like application failure.
  • Security: no native auth or transport encryption. Any reachable daemon is an open job-execution surface. This can fail a security review on its own.
  • Observability gap: without added instrumentation you cannot answer "where is job X," which is a common incident-response blocker.

Ramp-up

  • Engineer cost: roughly 3–5 days for a competent Laravel developer to become productive on ext-gearman plus this bundle's semantics; 2–3 weeks before they can operate it under incident.
  • Organizational cost: a new daemon in the on-call rotation, new runbooks, new monitoring, and a new container base image.

TPM recommendation

  • Do not adopt as a Laravel dependency. v5.1.1 is a routine 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.
  • Use it only as a short design reference if Gearman is already mandated by an existing platform — and if you do, port to PHP 8 attributes rather than carrying the deprecated annotation reader forward. Otherwise default to Horizon or SQS and close the evaluation. The prior opportunity read still holds; this release does not move it.
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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
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
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core