everyFiveMinutes() ->withoutOverlapping() ->runInBackground(); /* * Safety net for image processing. Uploads queue their own work, but a worker * that is down would otherwise leave images without dimensions indefinitely — * and the symptom, a page that reflows as it loads, is easy to miss. */ Schedule::command('media:process') ->everyTenMinutes() ->withoutOverlapping() ->runInBackground(); Schedule::command('repos:sync') ->cron(match ($cron = (string) config('git.sync_cron', 'hourly')) { 'hourly' => '0 * * * *', 'daily' => '0 4 * * *', default => $cron, }) ->withoutOverlapping() ->runInBackground(); // A week and a day before a call closes or content comes off the site, the // people who could do something about it are told. Schedule::command('content:expiring') ->dailyAt('08:00') ->withoutOverlapping(); // Old audit entries: they name people and the addresses they worked from, so // they are kept for `audit.retention_days` and no longer. Schedule::command('model:prune', ['--model' => [AuditLog::class]]) ->daily() ->withoutOverlapping() ->runInBackground();