N+1-Probleme systematisch aufspüren
Ein praxisnaher Ablauf, um N+1-Fehler mit Telescope zu debuggen. Nicht nur zu bemerken, „dass sich SELECTs wiederholen”, sondern der komplette Workflow bis zur Verifikation.Langsame Requests im Tab 'Requests' finden
Öffnen Sie
/telescope und identifizieren Sie im Tab „Requests” langsame Anfragen.Ausgeführtes SQL unter 'Queries' prüfen
In der Request-Detailansicht sehen Sie alle während der Anfrage ausgeführten SQL-Queries. Wiederholt sich ein SELECT wieder und wieder, handelt es sich um N+1.
dd() oder Logs in den Code einzubauen.
Bestimmte Requests per Tags nachverfolgen
Telescope bietet eine Tag-Funktion. MitTelescope::tag() weisen Sie einem Eintrag beliebige Tags zu und filtern das Dashboard schnell nach diesen Tags.
Besonders nützlich, um Vorgänge zu einer bestimmten Nutzer- oder Bestell-ID zu verfolgen.
/telescope/requests in der Suche user:42 ein, listet Telescope nur die Requests des Nutzers mit ID 42 auf.
Modelle automatisch taggen
Mit der Methodetags im TelescopeServiceProvider können Sie bestimmte Modell-IDs an alle Einträge anhängen.
HasTags an Ihrem Modell, damit das Modell beim Aufzeichnen automatisch getaggt wird.
Nutzung des Dump-Watchers
Wenn Siedump() verwenden, mischt sich die Ausgabe in HTML-Responses und erschwert das Debugging von APIs. Der Dump-Watcher von Telescope schreibt die Ausgabe von dump() in das Dashboard, statt sie in die Browser-Response zu senden.
Die Verwendung ist einfach: Öffnen Sie in /telescope den Tab „Dump” und rufen Sie dump() auf.
dd() stoppt die Ausführung nicht, sodass Sie fortlaufend Requests durchreichen können.
E-Mail-Debugging komfortabel mit Mailpit
Die Kombination aus Mail-Watcher und dem lokalen SMTP-Server Mailpit verbessert die Mail-Entwicklung erheblich.Debugging von Events und Listenern
Das Debuggen von Event-getriebenem Code ist oft schwierig. „Wird das Event überhaupt gefeuert?” oder „Welche Listener werden aufgerufen?” – im Log nachzuverfolgen ist mühsam. Der Events-Watcher von Telescope listet die gefeuerten Events und die zugehörigen Listener auf. Wird ein Listener nicht aufgerufen, prüfen Sie im Tab „Events” den Eintrag:- Event wird gefeuert, aber kein Listener erscheint → Listener nicht registriert (
EventServiceProviderprüfen) - Event selbst wird nicht gefeuert → die
event()-Aufrufstelle prüfen
Queue-Jobs debuggen
Bei asynchroner Verarbeitung ist die Ursachenermittlung über Logs schwierig. Der Jobs-Watcher von Telescope zeichnet den Dispatch bis zum Ergebnis auf. Ein Klick auf einen fehlgeschlagenen Eintrag zeigt Stacktrace und Exception. Die Diagnose gelingt schneller als über die Tabellequeue:failed allein.
sync-Treiber führt Jobs synchron innerhalb der Anfrage aus; die Ausführung erscheint dadurch auch im Requests-Watcher.
HTTP-Client debuggen
Beim Debuggen externer API-Kommunikation hilft der HTTP-Client-Watcher. Anfragen über dieHttp::-Facade und die zugehörigen Antworten werden aufgezeichnet.
dd($response->json()) ist überflüssig – das Dashboard genügt.
Fazit
| Technik | Nutzen |
|---|---|
| N+1-Workflow | Query-Probleme systematisch ohne dd() finden und beheben |
| Tagging | Einträge bestimmter Nutzer/Modelle sofort filtern |
| Dump-Watcher | Dump-Ausgaben prüfen, ohne API-Responses zu verunreinigen |
| Mailpit-Integration | Angenehme lokale E-Mail-Entwicklung |
| Events-Watcher | Event- und Listener-Feuerung visuell prüfen |
| Jobs + sync | Asynchrone Verarbeitung synchron debuggen |
| HTTP-Client | Aufzeichnen und Prüfen externer API-Aufrufe |
Laravel-Telescope-Leitfaden
Details zur Installation und zu Watchern finden Sie auf der Guide-Seite.
Laravel Nightwatch
Für Monitoring in der Produktion nutzen Sie Nightwatch.