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.1
Langsame Requests im Tab 'Requests' finden
Öffnen Sie
/telescope und identifizieren Sie im Tab „Requests” langsame Anfragen.2
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.
3
Eager Loading ergänzen und beheben
Fügen Sie
with() im Code hinzu und prüfen Sie die Queries erneut. Ist die Zahl deutlich gesunken, ist der Fix abgeschlossen.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
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.