Détecter les problèmes N+1 méthodiquement
Voici un flux pratique de debug N+1 avec Telescope. Il ne s’agit pas seulement de « remarquer que le même SELECT se répète » mais de mener toute la démarche, jusqu’à la vérification après correction.Repérer les requêtes lentes dans Requests
Ouvrez
/telescope, onglet Requests, identifiez les requêtes à temps d’exécution élevé.Vérifier les SQL dans Queries
Le détail d’une requête liste toutes les SQL exécutées pendant la requête. Si un même SELECT se répète, c’est un N+1.
dd() ni de logs.
Suivi de requêtes précises via les tags
Telescope possède une fonctionnalité de tags.Telescope::tag() ajoute des tags arbitraires à une entrée, ce qui permet de filtrer rapidement le dashboard.
Très utile pour suivre les traitements liés à un utilisateur donné ou une commande précise.
/telescope/requests, taper user:42 dans la recherche liste immédiatement toutes les requêtes de l’utilisateur 42.
Tags automatiques sur les modèles
Dans la méthodetags du TelescopeServiceProvider, vous pouvez appliquer l’ID d’un modèle à toutes les entrées.
HasTags sur le modèle, ses tags sont ajoutés automatiquement lorsqu’il est enregistré.
Utiliser le watcher Dump
Utiliserdump() peut polluer la réponse HTML et compliquer le debug d’une API. Le watcher Dump de Telescope permet de dévier la sortie de dump() vers le dashboard plutôt que la réponse.
L’utilisation est simple : ouvrez l’onglet « Dump » de /telescope et appelez dump().
dd(), l’application n’est pas interrompue : pratique pour enchaîner des requêtes.
Debug e-mail confortable avec Mailpit
Combiner le watcher Mail avec le serveur SMTP local Mailpit transforme le développement d’e-mails.Debug d’événements et de listeners
L’event-driven est souvent difficile à déboguer. « L’événement est-il déclenché ? », « Quels listeners sont appelés ? » — suivre cela dans les logs est fastidieux. Le watcher Events de Telescope liste les événements dispatchés et leurs listeners. Si un listener n’est pas appelé, ouvrez son entrée dans l’onglet Events.- L’événement est bien dispatché mais aucun listener n’apparaît → listener non enregistré (vérifiez
EventServiceProvider) - L’événement n’est même pas dispatché → vérifiez l’appel à
event()
Debug de jobs de queue
Déboguer de l’asynchrone à partir des logs seuls est difficile. Le watcher Jobs de Telescope trace du dispatch à l’exécution. Sur un job en échec, cliquez pour voir la stack trace et le message d’exception. Complémentaire à la tablequeue:failed, il accélère l’analyse des échecs.
Debug du client HTTP
Pour tracer les échanges avec des API externes, le watcher HTTP Client est très utile. Les requêtes faites via la facadeHttp:: et leurs réponses sont enregistrées.
dd($response->json()).
Conclusion
| Technique | Bénéfice |
|---|---|
| Workflow N+1 | Trouver et corriger les problèmes de requêtes sans dd() |
| Tags | Filtrer immédiatement les entrées d’un utilisateur/objet |
| Watcher Dump | Voir la sortie de dump() sans altérer la réponse API |
| Mailpit | Confort de développement e-mail local |
| Watcher Events | Visualiser le déclenchement des événements et listeners |
| Jobs + sync | Déboguer les asynchrones en synchrone |
| Client HTTP | Trace et vérification des appels API externes |
Guide Laravel Telescope
Consultez la page guide pour l’installation et la configuration des watchers.
Laravel Nightwatch
Pour la supervision en production, utilisez Nightwatch.