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 dansroutes/console.php.
schedule:list liste les tâches et affiche leur prochaine exécution.Flux d’exécution
Définir des planifications
Écrivez dansroutes/console.php. Vous pouvez aussi passer par withSchedule dans bootstrap/app.php.
Types de tâches planifiables
Commandes Artisan
Utilisezcommand. Nom de commande ou classe.
Jobs de queue
job planifie un job de queue, sans closure explicite.
Commandes shell
exec exécute une commande OS.
Closures
call planifie une closure.
__invoke :
Fréquences
Méthodes principales
Expression cron directe
Combinaisons
Fuseau horaire
timezone sur une tâche :
config/app.php.
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.
Le verrou passe par le cache. Si la tâche reste bloquée, libérez-le avec
schedule:clear-cache.Multi-serveurs
AveconOneServer, une seule instance de serveur exécute la tâche parmi toutes.
Flux distribué avec onOneServer()
Grouper des tâches
Appliquez des réglages communs avecgroup.
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.
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.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.
emailOutputOnFailure.
Hooks
before / after avant et après l’exécution.
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 :
En local
schedule:work maintient un planificateur en foreground.
Ctrl+C.
Sous-minute
Cron ne descend pas sous la minute. Laravel offreeverySecond().
schedule:run tourne jusqu’à la fin de la minute.
Pour interrompre un schedule:run pendant un déploiement :