eonx-com/schedule-bundle
Brings Laravel's command scheduling to Symfony: register scheduled commands via autoconfigured schedule providers with the full Laravel scheduling API, then run them with the schedule:run console command.
ScheduleProviderInterface services collected by Symfony's autoconfigure, executed by a single schedule:run entry point, all under version control and code review.setMaxLockTime() for overlap protection, fluent cadence (everyMinute(), everyFiveMinutes()), argument passing via command('x', ['-v']) — are exactly the parts that matter when concurrent runs corrupt data (billing, inventory, payouts). This gives the PM a concrete yardstick for whether a scheduling approach is production-grade or a sleep loop in disguise.src/Schedule/*Provider.php under Git support review, testing, and rollback. This is a governance improvement the PM can claim regardless of which implementation wins.Consider it when all of the following hold:
schedule:run entry point rather than scattered crontab lines.[READ-ONLY], 0 stars, 0 dependents, no Flex recipe, no documented compatibility matrix for PHP/Symfony/illuminate/* versions.Look elsewhere when:
illuminate/* coupling will not clear review.To executives (one paragraph): We have a low-cost opportunity to move scheduled jobs out of opaque server cron and into version-controlled application code, which improves auditability, code review, and environment consistency. There is a ready-made pattern for this — a small MIT-licensed Symfony bundle that ports Laravel's well-known scheduling API — and it costs us nothing to evaluate because it is not a vendor commitment. One caveat up front: the package is archived and unmaintained, so the actual recommendation is to adopt the pattern — most likely through Symfony's own Scheduler component, or a small internal fork we own — rather than take a long-term dependency on this specific library. Net effect: less operational toil and fewer "the nightly job didn't run" incidents, at low engineering cost and with an easy exit if we change direction.
To engineering: Integration is genuinely small — composer require, register the bundle in config/bundles.php (no Flex recipe was ever published), then implement ScheduleProviderInterface in one or more autoconfigured services; ScheduleInterface mirrors Laravel Console Scheduling, so anyone with Laravel background is productive on day one. You get argument passing, per-task locks via setMaxLockTime(), and overlap protection — the parts that actually bite in production. Two caveats to plan around. First, it is archived: treat it as a spec. Second, it transitively pulls illuminate/support, illuminate/console, and illuminate/container into our Symfony dependency graph with no published compatibility matrix, so validate constraints empirically before committing. Proposed path: pilot the API shape in a throwaway branch, smoke-test provider discovery and overlap locking with two concurrent runners, then decide on a documented scorecard between Symfony Scheduler and an internal pinned fork. Either way, sequence this behind run logging and failure alerting — a scheduler we cannot see is a scheduler we cannot trust.
Recommendation: Evaluate, do not adopt as-is. Use the package as the reference for API ergonomics, prototype against Symfony's native Scheduler, and make the build-vs-fork decision this cycle while the migration cost is still near zero.
How can I help you explore Laravel packages today?