Laravel
Laravel 11 & 10 • Chapitre 4 : Fonctionnalités Avancées

Task Scheduling : L'Ordonnanceur de Tâches Automatisé

Dans le passé, chaque tâche automatisée sous Linux nécessitait d'ajouter manuellement une ligne obscure dans crontab. Grâce au Task Scheduling de Laravel, un seul Cron suffit sur le serveur : toute votre planification s'écrit en PHP fluide dans routes/console.php.

⏱️
Un Seul Cron Serveur

Une seule entrée * * * * * php artisan schedule:run déclenche toutes vos tâches à la seconde près.

📄
routes/console.php

Nouveau standard Laravel 11 : définissez vos schedules avec la façade Schedule sans aucun fichier Kernel.

🛡️
withoutOverlapping

Empêche une tâche longue de s'exécuter en doublon si la précédente n'a pas encore fini son travail.

💻
schedule:work Local

Testez vos planifications en local sur Windows ou Mac sans Cron Linux grâce au worker d'émulation intégré.

routes/console.php (Syntaxe Moderne Laravel 11)
// 1. routes/console.php (Planification centralisée en Laravel 11)
use IlluminateSupportFacadesSchedule;
use AppJobsGenerateMonthlyReport;

// A. Commande exécutée tous les jours à 02h00 du matin
Schedule::command('backup:clean')->dailyAt('02:00');

// B. Sauvegarde complète chaque nuit avec protection contre le chevauchement
Schedule::command('backup:run')
    ->dailyAt('02:30')
    ->withoutOverlapping()
    ->emailOutputOnFailure('admin@learnweb.test');

// C. Nettoyage des modèles supprimés (SoftDeletes expirés) chaque semaine
Schedule::command('model:prune')->weekly();

// D. Dispatch d'un Job lourd le 1er du mois
Schedule::job(new GenerateMonthlyReport)->monthlyOn(1, '06:00');

// 2. Commandes Artisan d'inspection :
// Lister toutes les tâches et leurs prochaines exécutions :
// php artisan schedule:list

// Tester en local (exécute un scheduler toutes les minutes en boucle) :
// php artisan schedule:work

Simulateur Artisan Schedule Studio & Horloge Virtuelle

Simulation Cron Runner

Choisissez une heure de la journée ou simulez le déclenchement de la minute courante pour voir quelles commandes de l'ordonnanceur sont sélectionnées et exécutées.

CommandeFréquenceHeure ProgramméeStatut à 02:00
backup:cleandailyAt(02:00)02:00 ▶ À EXÉCUTER MAINTENANT
backup:rundailyAt(02:00)02:00 ▶ À EXÉCUTER MAINTENANT
emails:send-morning-digestdailyAt(08:00)08:00 En attente
metrics:refreshhourly()Toutes les heures ▶ À EXÉCUTER MAINTENANT
reports:send-dailydailyAt(18:30)18:30 En attente
Méthodes de Fréquence Disponibles dans Schedule
Méthode SchedulePériodicitéExemple Pratique
->everyMinute()Toutes les minutesSchedule::command('ping:services')->everyMinute();
->hourly()Toutes les heures (à la minute 0)Schedule::command('cache:prune')->hourly();
->dailyAt('03:00')Chaque jour à une heure préciseSchedule::command('backup:run')->dailyAt('03:00');
->weekdays()Du lundi au vendredi uniquementSchedule::command('reports:send')->weekdays();
->monthlyOn(1, '00:00')Le premier jour du mois à minuitSchedule::command('invoices:generate')->monthly();