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 Bundle Laravel Package

jmose/command-scheduler-bundle

Symfony bundle for scheduling console commands with cron expressions. Define jobs in YAML, run due tasks via a single scheduler command, and track execution status and logs. A lightweight alternative to system cron for Symfony applications.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Stack-fit reality check first (unchanged): despite being filed under Laravel/PHP, this is a Symfony bundle, not a Laravel package. If your product runs Laravel, it is not a candidate — Laravel's native scheduler plus heartbeat monitoring covers this ground. The decision it informs is "what do we do for a Symfony service or a legacy PHP app we're inheriting?"
  • Build vs. buy on scheduling UI: the core value is the admin panel + persisted schedule definitions, not the cron semantics. That is a real build cost — internal UI, RBAC, audit trail, DB-backed job table — and this bundle still saves roughly 2–4 weeks of tooling for a Symfony 3/4/5 app.
  • Symfony 5 is now in scope (v3.0.0): the supported ceiling moves from 4.x to 5.x, contributed by the community. This meaningfully extends the population of services where it is even theoretically applicable — a Symfony 5 app is the single best-fit target this package has ever had. Do not read it as a Symfony 6/7 path; it is not.
  • Supply-chain risk materially reduced (v3.0.0): replacing the long-abandoned mtdowling/cron-expression with the maintained dragonmantank/cron-expression removes the one dependency a security review would have flagged immediately, and the removal of Doctrine's deprecated merge() signals forward-compat work rather than pure neglect. This is the one change that genuinely alters the risk calculus.
  • Ops ownership model: it enables a decision about who owns recurring jobs — engineers via deploys, or ops/support via an authenticated panel. Staffing and incident-response decision, not just technical.
  • Consolidation roadmap: supports migrating scattered shell crontab entries into application-managed, version-controlled schedules — auditability, environment parity, rollback story.
  • Decisions it still does not support: anything requiring PHP 8.1+, Symfony 6/7, distributed scheduling, queue-backed workloads, or vendor support. composer.json declares PHP >= 7.2 with no PHP 8 declaration, and there is no distributed-scheduling story at all.
  • Release-process maturity is now a named risk: v3.0.0 was pulled from Packagist almost immediately for a bad version constraint, fixed in v3.0.1. That is a fast, honest response — but it is also evidence that a major release shipped without a smoke-test on the constraint itself. Weigh it as a signal about what a future upgrade would cost you.

When to Consider This Package

Consider it when:

  • You maintain a Symfony 5.x application (or 3.x/4.x) on traditional VMs/bare metal where crontab sprawl is a real operational pain. Symfony 5 is now the sweet spot — verify your exact minor version against the bundle's composer constraints before committing.
  • You need non-engineers (ops, support, account managers) to pause, reschedule, or re-run a job without a deploy.
  • The jobs are low-frequency, idempotent-enough, non-critical-path — nightly imports, report generation, cache warming, cleanup tasks.
  • You can accept the maintenance burden yourself: the code is small and forkable, so treat it as a vendored starting point, not a dependency.
  • A security review previously cited the abandoned cron-expression dependency as a blocker — that objection is now resolved, so re-open the ticket if it was rejected on those grounds.

Look elsewhere when:

  • You're on Laravel. Use the native scheduler; add heartbeat monitoring for visibility. Do not bolt a Symfony bundle onto a Laravel app.
  • You're on Symfony 6/7, or PHP 8+. The release notes raise the floor (PHP >= 7.2), not the ceiling. No PHP 8 declaration means you inherit a fork on day one.
  • You need distributed or exactly-once scheduling. No locking guarantees at this maturity level; multi-replica containers will double-fire jobs.
  • The work belongs in a queue. Retries, backoff, prioritization, throughput → Symfony Messenger, Laravel Horizon, etc.
  • Compliance or vendor support is required. Still a stale, near-zero-dependent project; the v3 line does not survive a procurement questionnaire any better than the v2 line did.

Mandatory due diligence before adoption: confirm whether v3.0.0 dropped Symfony 3/4 support (the notes only mention adding 5 — do not assume the old range survives a major bump), admin-panel security posture (this UI executes arbitrary registered commands — treat it as a privileged surface), PHP 8 compatibility, whether an active community fork exists, and a written exit plan.

How to Pitch It (Stakeholders)

To executives: "A small, free component that replaces hand-edited server cron files with a schedule that lives inside the application and is visible in an admin screen. It reduces 'nobody remembers why this job runs at 3am' incidents and lets operations staff pause a job without waking an engineer. No new infrastructure. The new release adds support for Symfony 5 and swapped out an abandoned library for a maintained one, which clears the main security objection we had. Recommendation: a two-week spike on the one legacy Symfony service where cron sprawl is worst — not a company-wide standard."

To engineering: "~300-star Symfony bundle, now with a Symfony 5 path and the abandoned mtdowling/cron-expression swapped for the maintained dragonmantank fork. Major release shipped, then got yanked from Packagist within hours over a bad PHP constraint and re-cut as 3.0.1 — so pin exact versions and read the composer.json yourself. Verify whether 3.x drops Symfony 3/4 before upgrading anything older. Still no PHP 8 declaration, still zero dependents. Vendor or fork it, budget for PHP 8 fixes, keep it off the critical path, and never in a Laravel codebase."

Headline recommendation: Low strategic value, slightly improved tactical fit. The v3 line lifts the package from "hard to justify" to "justifiable for exactly one Symfony 5 service" — the dependency swap and Symfony 5 support are real, the versioning carelessness is real too. Score moves from 15/100 to ~22/100. Approve as a scoped POC with an explicit fork-and-own decision; still reject as a platform standard.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager