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

Roadrunner Laravel Laravel Package

spiral/roadrunner-laravel

RoadRunner-powered application server for Laravel: replaces PHP-FPM with a high-performance Go worker, boosting throughput and cutting latency. Includes config publishing, Laravel integrations, and support for HTTP and queues via a simple composer install.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Runtime architecture: RoadRunner vs. PHP-FPM vs. Laravel Octane. This package is the adoption path for teams considering moving Laravel onto a long-lived Go application server. It's a build-vs-buy input: buy the integration glue (worker lifecycle, job dispatch, cache driver, Temporal bridge) rather than maintaining a fork.
  • Async work reliability and retry policy. Roughly half of this patch release (6.6.2) closes fidelity gaps between RoadRunner's queue worker and Laravel's native queue semantics: array-typed backoff, a maxTries fallback of 10, release() delays now converted to seconds, non-exception job failures, and non-object task payloads. These directly govern customer-visible behavior — retry cadence, time-to-first-retry, dead-lettering — so any product with SLA-bound async work (emails, webhooks, billing, exports) should treat this as a correctness dependency, not plumbing.
  • Rate limiting and counter correctness. The cache fix preserving remaining TTL on increment/decrement matters wherever counters back a product surface: API rate limits, quota windows, feature usage meters, attempt counters. Silent TTL resets extend or collapse a window — a pricing/entitlement bug, not just a caching bug.
  • Durable workflow orchestration (Temporal). The bridge's Temporal integration is the enabler for long-running, multi-step business processes (order fulfillment, KYC/onboarding, provisioning) that outlive a single request. Adopting it is a platform bet; the fix rethrowing exceptions from failed activities is what makes those workflows observable and debuggable rather than silently stalling.
  • Upgrade risk / roadmap timing. This is a patch release with no breaking changes and no deprecations, plus a PHPStan level-max pass and a docs refresh. Low-risk to take now; a reasonable forcing function to schedule the RoadRunner migration evaluation before the next planning cycle rather than mid-quarter.

When to Consider This Package

Adopt / evaluate when:

  • You are bootstrap- or throughput-constrained — high request volume where per-request framework boot is a measurable share of latency or cost, and you've already exhausted query/cache optimization.
  • You are already running RoadRunner, or are willing to operate a Go binary as a sidecar/entrypoint in your deploy topology (containers, systemd, Kubernetes).
  • You need queue throughput or worker density beyond what the database or Redis drivers comfortably give you, and you want it without rewriting job code.
  • You have a concrete durable-workflow need that a job chain plus a scheduler can't express (compensating steps, long human-in-the-loop waits, exactly-once-ish side effects).
  • You want Laravel-native semantics preserved — the whole point of this bridge is that dispatch(), release(), backoff, tries keep working, so migration is config-level rather than code-level.

Look elsewhere when:

  • You're on shared hosting or any environment without long-lived processes — this is a non-starter.
  • You've already standardized on Octane (Swoole/FrankenPHP) or a managed platform runtime; the marginal gain rarely justifies a second runtime model.
  • Your team has no appetite for Go-binary operations, process supervision, or worker memory/state-leak tuning — long-lived workers turn state leakage into a production hazard.
  • Your queue volume is modest and native Redis/database queues are already fine.
  • You need vendor-backed SLAs and support contracts; this is a community project in the RoadRunner org — validate the maintenance cadence and supported Laravel/PHP versions against your support requirements before committing.
  • You need strict, exhaustively-verified parity with every Laravel queue and cache edge case today. This release fixing array backoff, null maxTries, and non-object payloads is evidence that edge cases are still being closed in 6.x — acceptable for most, disqualifying for teams that cannot absorb that class of surprise.

How to Pitch It (Stakeholders)

For executives: This is a low-risk patch release (6.6.2) for the RoadRunner–Laravel bridge — no breaking changes, no deprecations, and it's mostly bug fixes plus a docs and static-analysis cleanup. The substance is that it closes several gaps where the RoadRunner worker didn't behave exactly like Laravel's built-in queue: retry delays, backoff schedules, max-attempt fallbacks, and failed-job handling now match native semantics, and cache counters no longer lose their expiry on increment/decrement. In plain terms, it fixes ways async work and rate limits could silently misbehave in production. It's safe to upgrade and a good moment to evaluate whether moving Laravel onto RoadRunner is worth the infrastructure savings at our traffic level.

For engineering: Patch release, seven fixes, all in the queue/cache/Temporal paths. Highest-impact items: release() delay is now converted to seconds in RoadRunnerJob (fixes #198 — a unit-mismatch bug with potentially large dispatch-delay drift); array WorkerOptions::$backoff is honored when releasing failed jobs (#197); null maxTries falls back to 10 rather than behaving ambiguously (#190); RoadRunnerJob handles failure without an exception (#200) and tolerates non-object task payloads (#191); cache increment/decrement preserve remaining TTL (#189 — relevant to locks, quotas, rate limiters); Temporal failed-activity exceptions are rethrown instead of swallowed (#193). Codebase now passes PHPStan at level max, so static analysis should be tightened on our side if we fork or extend. No migration steps expected — upgrade and run the queue/cache test suite; add regression coverage for delayed release() and TTL-bearing counters if we don't have 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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package