2016-08-09 51 views
0

Ich muss meine Laravel Abfragen optimieren und viele Duplikate sehen.Laravel (4) abrufen Abfrage Stapelverfolgung

Ich habe sie protokolliert und siehe SQL, aber ich kann den Aufrufer nicht finden, der sie erzeugt.

Was ich brauche, ist eine Art von Stack-Trace für jede Abfrage, so dass ich den Punkt in meinem Code identifizieren kann, der sie startet und optimiert.

Wie kann ich es tun?

ich verwende Laravel 4, Antworten für Laravel 4

bevorzugt

Antwort

0

Probieren Sie für laravel-debugbar, wird es Abfragen auf aktuelle Ansicht ausgeführt zeigen, neben Sie langsam Code finden können versuchen, das Stück im Verdacht Teile in dieser Einfügen Art der Klammern:

Debugbar::startMeasure('render','Time for rendering'); 
suspectedMethod(); 
Debugbar::stopMeasure('render'); 
+0

hallo, auf diese Weise ist nur sinnvoll, wenn ich bereits die Methode vermutet, dass die Abfrage trig, nicht wahr? –

+0

Sie können die Hälfte Ihrer Methoden, die zu dieser Funktion und nächsten Hälfte in einem anderen Takt aufgerufen werden, überprüfen, welche mehr Zeit brauchen und nur in längeren Halbseiten wiederholen;) – Geding

0

zu tun, was Sie wollen, können Sie einen Ereignis-Listener erstellen, die den Call-Stack jedes Mal, wenn eine Abfrage ausgeführt wird protokolliert.

Event::listen('illuminate.query', function($query) { 
    Log::info('Query ran', debug_backtrace()); 
}); 

Sie könnten diese Zuhörer registrieren vielleicht in app/start/global.php

+0

Warum der Downvote? –