Intégration
Monitoring PHP Laravel : le planificateur
Dans une application PHP Laravel, toute la planification tourne depuis un seul schedule:run chaque minute. S’il s’arrête, ou si une tâche s’arrête, rien ne vous prévient. Le paquet SilenceWatch lit votre planification, déclare chaque tâche avec sa vraie expression cron, et signale chaque exécution.
Un paquet, une clé
Section intitulée « Un paquet, une clé »composer require silencewatch/laravelSILENCEWATCH_API_KEY=sw_...C’est toute la mise en route : Laravel découvre le paquet, et rien ne change dans votre planification. La première fois que schedule:run exécute une tâche, toute la planification est déclarée dans SilenceWatch avec ses vraies expressions cron, et chaque tâche envoie un signal autour de chaque exécution, avec sa durée et ses échecs. Aucun check à créer à la main, aucune URL de ping à copier, rien à tenir à jour quand vous modifiez routes/console.php.
Ce qui le distingue
Section intitulée « Ce qui le distingue »- Il écoute, il n’enveloppe pas. Le paquet utilise les événements que le planificateur de Laravel émet déjà : vos tâches ne sont pas modifiées, et les tâches en arrière-plan (
->runInBackground()) sont signalées avec leur code de sortie. - Il lit les vraies planifications, avec le fuseau horaire propre à chaque tâche (
->timezone()), sinon celui de l’application. - Il donne à chaque tâche une identité stable (
artisan:backup:run --only-db,exec:/opt/scripts/export.sh,call:App\Jobs\PruneOrders) : l’historique survit aux déploiements, aux renommages et aux changements de serveur. - Il ne supprime jamais rien. Une tâche qui quitte la planification est marquée orpheline ; l’historique est gardé jusqu’à ce que vous le supprimiez.
- Il distingue les environnements, avec
APP_ENVpar défaut : staging et production sont deux ensembles de checks séparés. - Il vous dit ce qu’il ne surveille pas.
php artisan silencewatch:syncdéclare la planification à la fin d’un script de déploiement et liste les tâches laissées de côté, avec la raison.
Il ne peut pas vous nuire
Section intitulée « Il ne peut pas vous nuire »- il ne fait jamais échouer votre tâche : toute erreur est interceptée, et une tâche réussie n’est jamais signalée à Laravel comme échouée à cause du paquet ;
- il coûte presque rien : PHP n’a pas de fil d’arrière-plan, donc un signal est une requête que le planificateur attend, deux secondes au plus, et dès que SilenceWatch n’a pas répondu, les autres tâches de cette exécution ne l’attendent plus ;
- il se dégrade en silence : sans clé, sans réseau ou sans serveur, la planification tourne exactement comme sans le paquet ;
SILENCEWATCH_ENABLED=falsesupprime tout le mécanisme ;- il n’a aucune dépendance en dehors de Laravel. Laravel 12 et 13, PHP 8.2 ou plus récent.
Tous les réglages et limites sont dans la documentation du paquet.
Si votre job n’est pas dans le planificateur Laravel
Section intitulée « Si votre job n’est pas dans le planificateur Laravel »Tout job capable de faire une requête HTTP peut être surveillé avec l’API de ping. Voir la surveillance de tâches cron et les exemples.
Questions fréquentes
Section intitulée « Questions fréquentes »Comment surveiller le planificateur Laravel ?
Lancez composer require silencewatch/laravel et définissez SILENCEWATCH_API_KEY. La première fois que schedule:run exécute une tâche, la planification est déclarée avec ses vraies expressions cron, et chaque tâche envoie un signal autour de chaque exécution.
Dois-je modifier mes tâches planifiées ?
Non. Le paquet écoute les événements que le planificateur émet déjà ; vos tâches ne sont ni enveloppées ni modifiées.
Quelles tâches ne sont pas surveillées ?
Une closure sans nom (donnez-lui ->name()), une tâche avec une condition comme between(), when() ou skip(), car son expression cron dit quand elle peut s’exécuter, pas quand elle le fait, et les expressions cron « jour ouvré le plus proche ». php artisan silencewatch:sync les liste avec la raison.
Le paquet peut-il ralentir ou casser mon planificateur ?
Non. Les erreurs sont interceptées, l’attente est limitée au délai (deux secondes par défaut) et supprimée pour la suite d’une exécution dès que SilenceWatch n’a pas répondu, et sans clé ni réseau la planification tourne comme sans le paquet.
Quelles versions sont prises en charge ?
Laravel 12 et 13 avec PHP 8.2 ou plus récent. Le paquet est testé en CI sur la plus ancienne et la plus récente de ces versions.