Architecture Fit
The package (shapecode/cron) extends Laravel’s built-in task scheduling with pauseWindows functionality, enabling granular control over job execution timing (e.g., skipping jobs during maintenance windows or overnight). This aligns well with Laravel’s native Schedule facade and command:schedule event hooks, minimizing architectural disruption. The addition of ASCII visualization (cron:visualize) provides a lightweight, debug-friendly way to validate schedules without external tools.
Integration Feasibility
pauseWindows uses a fluent API (pauseWindows([1 => '02:00-06:00'])), reducing boilerplate for time-based exclusions.Technical Risk
visualize command is non-intrusive (outputs to CLI).pauseWindows (defaults to server timezone; docs should clarify).Key Questions
pauseWindows interact with Laravel Forge/Envoyer deployments? (E.g., paused jobs during zero-downtime releases.)visualize command be integrated into CI pipelines for pre-deployment schedule validation?Stack Fit
app/Console/Kernel.php and schedule:run command.pauseWindows).laravel/scout, spatie/schedule-command, or laravel-horizon for advanced queue-based scheduling.Migration Path
composer require shapecode/cron
Schedule::call() with AsCronJob::call() for jobs needing pause logic.
AsCronJob::call('backup-database')
->daily()
->pauseWindows([1 => '02:00-06:00']); // Skip 2–6 AM daily
php artisan shapecode:cron:visualize
Output Example:
[Mon] ██████░░░░██████ # Jobs run (█), paused (░)
Compatibility
database, redis, or sync queues (no driver-specific changes).phpunit.xml:
<env name="CRON_VISUALIZE" value="1" />
Sequencing
pauseWindows for critical jobs (e.g., reports, backups).visualize in staging for schedule validation.Maintenance
cron edits (e.g., no need to disable jobs via .env).Support
visualize command replaces ad-hoc log checks for schedule timing.pauseWindows ranges (e.g., overlapping intervals).Scaling
pauseWindows adds negligible overhead (~1ms per job check).Failure Modes
| Scenario | Impact | Mitigation |
|---|---|---|
pauseWindows overlap |
Jobs skipped unexpectedly | Validate with visualize command |
| Timezone misconfig | Wrong pause times applied | Enforce UTC in config |
| CLI command permissions | Non-devs can’t run visualize |
Restrict via artisan:commands middleware |
Ramp-Up
pauseWindows syntax (e.g., weekly ranges).visualize output.pause-windows.md) for targeted learning.composer.json.visualize in staging.pauseWindows.How can I help you explore Laravel packages today?