Run scheduled tasks predictably across environments.
Commands
// app/Console/Kernel.php
protected function schedule(Schedule $schedule): void
{
$schedule->command('reports:daily')
->dailyAt('01:00')
->withoutOverlapping()
->onOneServer()
->runInBackground()
->evenInMaintenanceMode();
}
# Run the scheduler from cron
* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1
Patterns
-
Guard long-running commands with
withoutOverlapping() -
Use
onOneServer()when running on multiple nodes -
Emit logs/metrics for visibility; consider notifications on failure
-
Feature-flag risky jobs via config/env