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

Command Scheduler Laravel Package

neogen/command-scheduler

Schedule and manage Laravel Artisan commands dynamically without touching your console kernel. Define commands, intervals, and arguments in config or the database, then let the scheduler run and track them automatically.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Package identity mismatch — the primary finding. Despite being framed as a Laravel package, neogen/command-scheduler is a Symfony bundle. That is not a packaging nuance; it changes the integration cost by an order of magnitude. A Symfony bundle ships a Bundle class, a DI Extension, and service/config YAML or XML that is compiled by Symfony's FrameworkBundle container. Laravel uses a subset of Symfony components (console, process, finder, http-foundation) but does not run the full FrameworkBundle, so the bundle's registration and container-compilation path has no host to execute in. Adopting it would mean either (a) reimplementing its internals as a Laravel service provider, or (b) bootstrapping Symfony's DI machinery inside a Laravel app — both of which defeat the purpose of pulling a dependency.

Architecture fit: poor, and largely redundant. Laravel already ships a first-class scheduler (Illuminate\Console\Scheduling\Schedule, schedule:run, schedule:work, schedule:list), including overlap prevention, output redirection, background execution, and hooks (before/after/onSuccess/onFailure). The stated value of this bundle — "monitor and execute commands" — is the exact surface Laravel owns natively. The only differentiated capability would be the monitoring half (persisted run records, status history), which is small, well-understood functionality that a maintained package or ~200 lines of first-party code covers.

Integration feasibility: low. A 2018 bundle will carry Composer constraints pinned to Symfony 3.4/4.x and PHP 7.1–7.2. Current Laravel (10/11) requires Symfony 6/7 components and PHP 8.1+. composer require will almost certainly fail dependency resolution; forcing it with --ignore-platform-reqs and constraint overrides leaves you with code that has never executed against the framework versions you run. There is no Laravel service provider, no facade, no config-publishing convention, and no artisan surface.

Technical risk: high.

  • Abandonment. Last release 2018-05-02 — roughly seven years without a tag. Zero stars, zero dependents, zero known production users. No maintainer capacity to respond to a security report.
  • Untested PHP 8 surface. PHP 7.1→8.x introduced dozens of breaking changes (typed property semantics, E_STRICT removal, stricter string/int coercion, create_function removal, dynamic property deprecation). Code written in 2018 is a coin flip on PHP 8.2+ even if it loads.
  • Command execution is an attack surface. A package whose purpose is to invoke shell commands, installed unmaintained, gives you a component nobody is watching for CVEs and that may build command strings from configuration or database rows. This is the highest-severity category of dependency to leave orphaned.
  • Silent failure mode. The monitoring layer is the thing you'd be relying on for visibility; if it fails to boot or mis-records under a newer runtime, you get false confidence — worse than no monitoring.

Key questions for the requester:

  1. What problem are we solving that Illuminate\Console\Scheduling\Schedule plus schedule:list does not already solve?
  2. Is the real requirement run history and alerting (i.e., monitoring), not scheduling? If so, that is a different, much smaller buy/build decision.
  3. Is any part of the estate actually running Symfony — i.e., is this under consideration for a non-Laravel service? If so, evaluate it there, and against maintained Symfony schedulers, not here.
  4. Who is proposing it, and is there an existing fork or internal dependency pulling it in transitively?

Verdict: do not adopt. The framework mismatch alone is disqualifying for a Laravel context; the abandonment profile disqualifies it for any context.

Integration Approach

Stack fit: none for Laravel. There is no service provider, no config/ publish path, no facade, and no scheduler hook integration. Any integration is a rewrite, not an integration. Recommend rejecting on stack-fit grounds before spending engineering time on a spike.

Recommended target architecture (what to sequence instead):

  1. Scheduling → native Laravel scheduler in routes/console.php (Laravel 11) or app/Console/Kernel.php. No new dependency.
  2. Run monitoring → a small first-party layer: a scheduled_task_runs table (task key, started_at, finished_at, exit_code, output excerpt, duration), written from a Schedule before/after/onFailure wrapper or a middleware-style decorator. Roughly a day of work, fully owned, no version risk.
  3. Alerting → hook onFailure into your existing observability stack (Sentry, Opsgenie, Slack). Alternatively evaluate a maintained package such as spatie/laravel-schedule-monitor — check its release cadence, Laravel version matrix, and issue responsiveness against the same criteria applied here.
  4. Overlap and durability → for anything long-running or needing retries, move the work to queued jobs behind Horizon rather than treating cron as a job runner. This is where the 2018-era "execute commands" framing is most dated.

Migration path (if a prototype already exists): inventory every command currently registered through this bundle and its schedule expression; re-express each as a Schedule::command() entry with explicit withoutOverlapping(), onOneServer(), and timeout; run both schedulers in parallel for one to two weeks with outputs diffed; cut over by disabling the old cron entry. The migration is bounded — the surface is a command list — which is precisely why the dependency is not worth carrying.

Compatibility: treat the package as incompatible until proven otherwise on PHP 8.1+/Laravel 10+. If a spike is mandated, timebox it to half a day, composer require in a throwaway branch, and record the exact constraint conflict output as the decision artifact. Expect that artifact to be a resolution failure, and let it settle the question cheaply.

Sequencing: resolve the "what is the actual requirement" question first (scheduling vs. monitoring). Only the monitoring half has real scope, and it should be built or bought as a monitoring component — never as a Symfony bundle grafted into a Laravel app.

Operational Impact

Maintenance: you would be the sole maintainer of an orphaned fork from day one. Zero stars and zero dependents means no upstream community to absorb bug fixes, no issue triage, no PR review. Every future PHP or Laravel major upgrade becomes your team's problem to patch in vendored third-party code. That cost is permanent and recurs on a roughly annual cadence across the framework lifecycle.

Support: none. No maintainer, no commercial backing, no security disclosure channel, no changelog after 2018. In an incident, the escalation path is "a current team member reads unfamiliar code under time pressure." For a component that executes shell commands, that is an unacceptable support posture regardless of criticality tier.

Scaling: the 2018 design almost certainly assumes a single host invoking cron against a local store. Multi-node deployments need distributed locking to avoid duplicate execution; modern Laravel provides onOneServer() backed by your cache driver. Retrofitting that into an abandoned bundle's execution path is not a configuration change — it is a fork. Command output and run-history storage will also grow unbounded without a retention policy you'd have to add yourself.

Failure modes to expect:

  • Boot failure after upgrade — DI extension or service definition incompatible with the host container; symptom is a hard error at application boot, i.e., total outage rather than degraded scheduling.
  • Silent non-execution — schedule registered but never fires due to a changed console event lifecycle; no alert fires because the monitoring layer is the thing that broke.
  • Double execution — multi-node race producing duplicate side effects (duplicate emails, duplicate charges) with no lock semantics.
  • Command injection — if any part of the command line is composed from stored or user-influenced data and the escaping predates modern hardening; unmaintained code will not receive a CVE-driven patch.
  • PHP 8 runtime errors — deprecations promoted to exceptions, type coercion changes, null-to-non-nullable internal argument passing.
  • False confidence — history table appears healthy while tasks are silently skipped, the worst outcome for a monitoring tool.

Ramp-up: low effort, low ceiling. A competent Laravel engineer reads the command list and reimplements it in the native scheduler in under a day. There is no deep domain knowledge to acquire, no integration expertise to build — which is itself the argument: the package's total value is smaller than the cost of carrying it. The ramp-up cost that does exist is unquantifiable — understanding 2018-era third-party internals with no documentation, no maintainer, and no tests.

Recommendation to stakeholders: reject. Close the evaluation with the framework-mismatch finding and the release-date finding as the two documented reasons. Redirect the underlying need — scheduled command visibility — to the native Laravel scheduler plus a small first-party run-history table, or to a maintained alternative vetted on release cadence and Laravel version support. If a Symfony service genuinely exists in the estate, re-run this assessment against a maintained Symfony scheduler in that context; nothing here transfers.

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