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

Dispatcher Laravel Package

indatus/dispatcher

Indatus Dispatcher is a Laravel package for scheduling Artisan commands and queued jobs with a fluent API. Define cron-style schedules, manage overlaps, and log or email command output, offering a flexible alternative to Laravel's built-in scheduler.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy vs. framework-native. Dispatcher is the canonical example of a third-party package that defined a pattern — schedule Artisan commands in source code, reduce crontab sprawl to a single entry — and was then absorbed into the framework itself (Laravel 5.0's Schedule class and schedule:run). It directly supports the decision to prefer framework-native capabilities over community packages when the problem is core to the application's runtime.
  • Legacy modernization roadmap. For any pre-5.0 Laravel application still in the fleet, Dispatcher is an incumbent dependency with a known, mechanical migration path to app/Console/Kernel.php::schedule(). That makes it a scoping input for upgrade epics: inventory scheduled events, port cron expressions, validate parity, cut the dependency.
  • Feature scope for in-app scheduling UX. It demonstrates the value of declarative, version-controlled schedules (->daily(), ->everyMinute(), environment-gated events) and lets you evaluate whether to expose schedule visibility — a read-only "what runs when" view — to operators and support teams.
  • Operational use cases worth scheduling: nightly report generation, cache and log cleanup, queue health checks, data sync jobs, stale-record pruning — the standard batch surface for a PHP monolith.
  • Dependency lifecycle and vendor-risk policy. With 0 Packagist dependents and a last release of March 2015, this package is a concrete data point for a "no unmaintained dependencies in production" rule and for setting thresholds (release recency, dependent count, maintainer responsiveness) that gate future adoptions.
  • Opportunity triage. A low opportunity score is itself the finding: the problem space is fully commoditized by the framework, so there is no product to build here — the correct move is consolidation, not investment.

When to Consider This Package

Consider it only in maintenance scenarios:

  • The application is pinned to Laravel 4.x (or an early 5.x) where no native scheduler exists and a framework upgrade is off the roadmap for the current quarter.
  • It is already installed and working, and removing it carries more risk than leaving it until the next planned upgrade.
  • You need a reference implementation to audit what the existing schedule actually does before porting it.

Look elsewhere in essentially every other case:

  • Laravel 5.0+ — use the built-in Illuminate\Console\Scheduling\Schedule. It covers the same cron-expression DSL, adds overlap prevention, background execution, output logging, and onOneServer semantics that Dispatcher never had.
  • PHP outside Laravel — symfony/scheduler or plain cron with a single dispatcher script.
  • Multi-node or high-volume workloads — neither this package nor a naive cron-driven scheduler is the right tool; reach for a job runner or orchestrator (Horizon/queue workers, Kubernetes CronJobs, Airflow, Temporal) where retries, locking, and observability are first-class.

Adoption blockers that should be treated as disqualifying for new work: no release since March 2015, no maintainer activity, near-certain incompatibility with PHP 7+/8+, no security response path, and zero dependent packages — no ecosystem signal that anyone is exercising it. Treat it as archived.

How to Pitch It (Stakeholders)

To executives: This is a legacy utility, not a candidate for investment. It popularized a good idea — keeping scheduled jobs in version-controlled application code instead of scattered server crontabs — and that idea is now a built-in feature of our framework. We should not add it to anything new, and where it exists we should fold it into the framework's native scheduler during the next planned upgrade. Cost avoided: an unmaintained third-party dependency that no one is patching, with a contained and mechanical exit path.

To engineering: The design pattern is right, the package is dead. If you're on Laravel 5+, you already have everything it does and more — port the schedule definitions to Kernel::schedule(), keep one cron entry calling schedule:run, and delete the dependency. If you're on Laravel 4.x, this stays until the framework upgrade; scope the port as a known-size task (one event per cron expression, verify environment gating and output handling) rather than an open-ended refactor.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core