Elke applicatie heeft terugkerende taken: dagelijkse rapporten genereren, oudere records opschonen, externe data synchroniseren, e-mails versturen. Laravel’s Scheduler geeft je een elegante manier om die taken te beheren — zonder rommel in je crontab.
Waarom Laravel Scheduler?
Zonder Scheduler zou je voor elke terugkerende taak een aparte cron-regel moeten toevoegen op de server. Dat leidt tot:
- Een onbeheersbare crontab
- Taken die niet in versiecontrole staan
- Moeilijk testbare geplande taken
Met Laravel Scheduler definieer je alle geplande taken in één bestand (app/Console/Kernel.php), en heb je maar één cron-regel nodig op de server.
De enige cron-regel die je nodig hebt
* * * * * cd /pad/naar/jouw/app && php artisan schedule:run >> /dev/null 2>&1
Die ene regel laat Laravel elke minuut checken of er taken gepland zijn.
Taken inplannen
protected function schedule(Schedule $schedule): void
{
// Dagelijks rapport genereren om 8:00
$schedule->command('rapport:genereer')->dailyAt('08:00');
// Elke 5 minuten data synchroniseren
$schedule->command('sync:externe-data')->everyFiveMinutes();
// Elke maandag opruimen
$schedule->command('logs:opruimen')->weekly()->mondays();
// Een closure plannen
$schedule->call(function () {
DB::table('cache')->where('expiry', '<', now())->delete();
})->hourly();
}
Handige methodes
->daily(),->hourly(),->weekly(),->monthly()->dailyAt('14:00')— specifiek tijdstip->cron('0 9 * * 1-5')— custom cron-expressie->weekdays(),->weekends()— dag-filters->between('8:00', '17:00')— alleen binnen bepaalde uren draaien
Taken voorkomen dat ze overlappen
$schedule->command('zware-sync')->everyMinute()->withoutOverlapping();
withoutOverlapping() voorkomt dat een nieuwe instantie start als de vorige nog loopt.
Output en monitoring
$schedule->command('rapport:genereer')
->daily()
->sendOutputTo('/var/log/rapport.log')
->emailOutputOnFailure('admin@jouwbedrijf.be');
Laravel Horizon
Voor queue-based taken biedt Laravel Horizon een dashboard voor monitoring. Combineer Horizon met de Scheduler voor complete controle over alle achtergrondprocessen.
Bij Meesy gebruiken we de Scheduler intensief in Laravel applicaties voor automatisering van bedrijfsprocessen: synchronisaties, rapporten, opruimtaken, notificaties. Het is een onderdeel van elke goed gebouwde maatwerk applicatie. Neem contact op.
Conclusie
Laravel Scheduler is een van die features die je leven als developer significant verbetert. Gestructureerd, versiebeheerd, en eenvoudig te onderhouden. Eens je ermee werkt, wil je nooit meer terug naar handmatige crontabs.