Skip to main content

Qu’est-ce que la planification

Traditionnellement, il fallait écrire manuellement une entrée cron par tâche périodique. Cette approche externalise les définitions du code : aucune versioning, et un SSH est nécessaire pour modifier. Avec le planificateur Laravel, vous définissez les planifications directement dans l’application de manière fluide. Une seule entrée cron sur le serveur, et les définitions vivent avec votre code, sous contrôle de version. Convention : définir les planifications dans routes/console.php.
schedule:list liste les tâches et affiche leur prochaine exécution.

Flux d’exécution

Définir des planifications

Écrivez dans routes/console.php. Vous pouvez aussi passer par withSchedule dans bootstrap/app.php.

Types de tâches planifiables

Commandes Artisan

Utilisez command. Nom de commande ou classe.
Commandes définies par closure : chaînez directement.

Jobs de queue

job planifie un job de queue, sans closure explicite.
Nom de queue et connexion :

Commandes shell

exec exécute une commande OS.

Closures

call planifie une closure.
Objet avec __invoke :

Fréquences

Méthodes principales

Expression cron directe

Combinaisons

Fuseau horaire

timezone sur une tâche :
Ou par défaut pour tout via config/app.php.
Les fuseaux avec heure d’été peuvent exécuter une tâche deux fois ou pas du tout au moment du changement. Préférez UTC dans la mesure du possible.

Contraintes

when / skip

Exécute si when retourne true, ignore si skip retourne true.

environments

Contraintes horaires

Jours

Éviter la superposition

Par défaut, une tâche peut commencer même si la précédente tourne encore. withoutOverlapping attend la fin.
TTL du verrou (minutes) ; 24 h par défaut.
Le verrou passe par le cache. Si la tâche reste bloquée, libérez-le avec schedule:clear-cache.

Multi-serveurs

Avec onOneServer, une seule instance de serveur exécute la tâche parmi toutes.
Nécessite un driver de cache database, memcached, dynamodb ou redis, partagé entre tous les serveurs.

Flux distribué avec onOneServer()

Grouper des tâches

Appliquez des réglages communs avec group.

Exécution en arrière-plan

Les tâches simultanées s’exécutent par défaut dans l’ordre de définition. runInBackground lance en parallèle.
Disponible uniquement avec command et exec.

Mode maintenance

En mode maintenance, les tâches planifiées ne s’exécutent pas. evenInMaintenanceMode force l’exécution.

Flux

Pause du planificateur

Suspendez sans modifier le code.
Pour continuer certaines tâches malgré la pause : evenWhenPaused. Utile pour la supervision.

Gestion des sorties

Fichiers

sendOutputTo écrit dans un fichier.
appendOutputTo ajoute au fichier existant.

Par e-mail

emailOutputTo envoie la sortie par e-mail. Nécessite la configuration mail.
Uniquement en cas d’échec : emailOutputOnFailure.

Hooks

before / after avant et après l’exécution.
Succès / échec via onSuccess / onFailure.

Déploiement sur serveur

1

Ajouter l'entrée cron

Ajoutez à crontab -e :
2

Vérifier

Liste des tâches et prochaines exécutions :
Avec Laravel Cloud, la planification est gérée sans configuration cron.

En local

schedule:work maintient un planificateur en foreground.
Il tourne jusqu’à Ctrl+C.

Sous-minute

Cron ne descend pas sous la minute. Laravel offre everySecond().
Lorsque des tâches sous-minute existent, schedule:run tourne jusqu’à la fin de la minute.
Déléguez le travail à des jobs / commandes en arrière-plan : sinon, une tâche longue bloque les suivantes.
Pour interrompre un schedule:run pendant un déploiement :

Commandes utiles

Dernière modification le 13 juillet 2026