whatwedo/cron-bundle
A Symfony bundle for managing scheduled cron jobs in code. Define recurring tasks and run console commands on configurable schedules, keeping cron configuration versioned and integrated with your Symfony application.
Architecture fit — poor for a Laravel estate. The package is a Symfony Bundle (whatwedo/cron-bundle), not a Laravel package. It assumes the Symfony runtime: a Kernel::registerBundles() bootstrap, the Symfony DI container, compiler passes, and service tagging for console commands. Laravel has no analogous bundle concept. Functionally it overlaps almost entirely with Illuminate\Console\Scheduling\Schedule, which already provides cron-expression evaluation, withoutOverlapping(), onOneServer(), runInBackground(), and before/after hooks — features this bundle does not visibly replicate. Adopting it would mean running two scheduling paradigms in one codebase or building a bridge that exists only to reach parity with the framework's built-in capability.
Integration feasibility — technically possible, economically unjustifiable. Composer will install it (MIT, plain PHP), but nothing will auto-register it. A real integration requires either (a) instantiating a Symfony container inside a Laravel service provider purely to host the bundle, or (b) forking and extracting the cron-parsing/execution logic into a Laravel-native command. Both are multi-day efforts to reproduce functionality available for free. There is no adapter layer, no Laravel service provider, and no documented cross-framework usage.
Technical risk — high, driven by zero ecosystem validation. Zero stars and zero dependents means no production evidence, no third-party bug reports, and no community patch surface. Maintenance is single-vendor (whatwedo); the repository's activity level is unverified, so abandonment is a live possibility. Version constraints against PHP and Symfony majors are unknown and would need to be read from composer.json before any decision. MIT licensing is clean, but a low-visibility package with no dependents carries elevated supply-chain review cost relative to its value.
Key questions for the vendor/maintainer:
Recommendation: reject for Laravel adoption; retain only as a reference implementation if a Symfony service already depends on it.
Stack fit. Laravel-first shops should treat this as a non-candidate. The idiomatic equivalent is a single crontab entry — * * * * * cd /path && php artisan schedule:run >> /dev/null 2>&1 — plus schedule definitions in routes/console.php or bootstrap/app.php. Where the organization also operates Symfony services, the bundle is a reasonable, if unvalidated, fit there and should stay scoped to those services rather than being generalized.
Migration path. The realistic direction is away from this bundle, not toward it. If a Symfony application using it is being consolidated onto Laravel, map each scheduled entry to a Laravel Schedule entry: cron expressions translate 1:1 via ->cron(), and Symfony command invocations become ->command() or ->call(). Attribute- or config-declared schedules should be inventoried first, because implicit registration is the most common source of missed jobs during a port.
Compatibility concerns.
@reboot-style directives, and overlap behavior are not standardized across implementations.Sequencing.
Schedule definition) and review it with the owning team.Estimated effort for a typical 10–20 job migration: 3–5 engineer-days plus one release cycle of parallel observation.
Maintenance. Adopting this package means accepting an unaudited dependency with no community backpressure. Any bug fix becomes an internal fork or an upstream PR to a maintainer with no obligation to respond. Budget ongoing ownership, not a one-time integration cost. The cheaper long-term position is to depend on the framework's scheduler, which is covered by Laravel's release and security process.
Support. No SLA, no vendor contract, no observable issue-tracker velocity. On-call runbooks would have to be written from source. If the bundle is already in production in a Symfony service, assign a named internal owner and pin the version explicitly.
Scaling. Cron-on-every-host is the classic scaling failure: horizontally scaled app servers each fire the job, producing duplicate side effects unless a distributed lock exists. Laravel addresses this with onOneServer() backed by a shared cache store; this bundle's equivalent is unverified and should be assumed absent until proven. For multi-node deployments, treat per-host execution as a defect, not a configuration option.
Failure modes to plan for.
Ramp-up. For a Symfony-fluent engineer, hours: the bundle is small and the domain is familiar. For a Laravel team, the cost is not learning the bundle but the context switch into Symfony DI idioms — a tax paid for capability the team already has. Net ramp-up is effectively negative value, and the onboarding documentation burden exceeds the tool's surface area.
How can I help you explore Laravel packages today?