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

ulabox/gearman-bundle

Symfony bundle that integrates Gearman into PHP applications, letting you configure job servers, register workers, and dispatch background jobs asynchronously. Adds service definitions, console commands, and event hooks for building scalable queue-based task processing.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing to flag is a category mismatch: ulabox/gearman-bundle is a Symfony bundle, not a Laravel package. Its value is Symfony-specific wiring — a DI extension, compiler passes, annotation/attribute-driven worker and job registration, and console commands that boot workers through the Symfony kernel. None of that transfers to Laravel's service container or console kernel without a shim layer, and a shim would discard most of what the bundle actually does. It is also a vendor fork (of the MMF GearmanBundle lineage) with 0 stars and 0 dependents, which reads as an internal fork published for convenience rather than a maintained distribution.

Integration feasibility. The bundle is a thin configuration layer over ext-gearman, the PECL extension that binds to libgearman. Real feasibility therefore depends on three external things, not on the package: (1) the PECL extension compiling and running on our target PHP version, (2) a gearmand broker we operate and monitor, and (3) a job topology (client/worker split, function-name registry) that we design ourselves. The bundle contributes the least risky part of that stack.

Technical risk.

  • Unmaintained dependency chain. No releases, no downstream consumers, no visible CI. Expect PHP 8 incompatibilities (typed properties, return types, deprecated doctrine/annotations usage) and Symfony 5+/6+ kernel API drift. Any fix becomes our fork to carry.
  • Extension risk dominates. ext-gearman has been in low-maintenance territory for years; building it against modern PHP and glibc is the single largest unknown. If it does not build, the package is moot.
  • No security patch path. A queue worker parses job payloads and executes arbitrary registered callables — an unmaintained code path here has a real blast radius.
  • Supply chain. Fork-of-a-fork with no upstream guarantee; we would effectively own it.

Key questions.

  1. What problem is this solving — background jobs, fan-out, scheduled work, or legacy interop with an existing Gearman estate?
  2. Are we on Laravel or Symfony? If Laravel, why is a Symfony bundle in scope at all?
  3. What PHP and framework versions must be supported, and does ext-gearman build against them today?
  4. Does Gearman infrastructure already exist in the org, or would we be introducing a new broker?
  5. Who owns this fork upstream, and is it still receiving commits?
  6. What is the cost of the native alternatives we already run (Redis + Horizon, SQS, Symfony Messenger) doing this job?

Integration Approach

Stack fit. Poor for a Laravel stack. Laravel already ships a queue abstraction with retries, backoff, dead-letter handling, batching, and Horizon observability; adopting Gearman means rebuilding those semantics on a raw client. If Gearman is non-negotiable (e.g., other services already speak it), the correct integration is to use \GearmanClient and \GearmanWorker directly behind a small Laravel-native adapter — a GearmanQueue driver implementing Illuminate\Contracts\Queue\Queue — and skip this bundle entirely. That keeps the queue contract, the failed-jobs table, and the supervisor tooling intact.

Migration path. Two distinct paths, and they should not be conflated:

  • Greenfield: don't. Use the database or Redis driver, add Horizon, and move on.
  • Legacy Gearman interop: keep the existing gearmand, write the thin adapter above, and constrain Gearman to the cross-service boundary only — never as the internal job bus.

Compatibility. Pin an explicit matrix before any code: PHP version, ext-gearman version, libgearman version, Symfony components (if the bundle is used at all), and doctrine/annotations vs. native attributes. Expect the annotation reader to be the first breakage on modern stacks.

Sequencing.

  1. Spike (1–2 days): build ext-gearman in a container matching production; run a trivial echo worker. This is a go/no-go gate — do not proceed past it.
  2. Adapter design: define the Laravel queue contract surface we need (push, pop, retry, fail) and prove parity on one low-risk job.
  3. Broker ops: stand up gearmand with persistent queue backing, health checks, and metrics.
  4. Supervisor rollout: worker process management with memory limits and restart policies.
  5. Cutover one job class, measure, then expand — or stop and record the finding.

Operational Impact

Maintenance. We inherit the fork. There is no upstream to rebase onto and no release cadence to track; every PHP minor bump becomes an audit of the bundle and the PECL extension. Budget recurring maintenance, not a one-time integration cost. The realistic steady state is "we own a small queue library nobody wanted to write."

Support. Zero community: no issues triage, no Stack Overflow corpus, no vendor. Troubleshooting falls to whoever wrote the adapter. Documentation is the repository README and Symfony's historical docs. This is a bus-factor-of-one situation unless we deliberately spread knowledge.

Scaling. gearmand scales horizontally for throughput but is operationally spiky: durable queues require a MySQL/Postgres backing store (the libdrizzle path), which adds a second stateful dependency. PHP workers are long-lived, blocking, and leak-prone — they need hard max_requests equivalents, memory ceilings, and supervisor restart policies. There is no native priority lane, rate limiting, or delayed-job primitive comparable to Laravel's; those become custom protocol on top of function-name conventions.

Failure modes. The ones to plan for explicitly:

  • Silent job loss when the queue is in-memory and gearmand restarts — the default configuration is not durable.
  • No acknowledgment semantics — worker crash mid-job means the job is gone or re-delivered depending on configuration, giving at-least-once at best and duplicate side effects as the default hazard.
  • Blocking worker starvation — a slow job holds a worker slot; no timeout discipline means the pool silently drains.
  • Broker as SPOF — gearmand down stops all async work with no framework-level fallback.
  • Extension-level crashes — a segfault in ext-gearman takes down the worker with no PHP-level trace.
  • Payload contracts — no schema enforcement across producer/consumer, so a serialization change breaks workers silently.

Ramp-up. High relative to value. Engineers must learn three unfamiliar layers at once: the Gearman client/worker model, Symfony bundle configuration conventions inside a Laravel codebase, and the C extension's quirks. Compared to onboarding onto Laravel queues — which most PHP hires already know — this is weeks, not days, and the knowledge is non-transferable to the rest of the stack.

TPM recommendation. Gate on the extension spike first. Absent an existing organizational Gearman estate, the expected value here is negative: unmaintained code, a category mismatch against a Laravel stack, and operational semantics we would have to rebuild. Even in the legacy-interop case, the bundle itself is not the artifact to adopt — the raw client is.

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