2016-08-18 4 views
2

Ich erstelle einen Konsolenbefehl für mein Bundle mit Symfony 2. Dieser Befehl führt mehrere Anfragen an die Datenbank aus (Mysql). Um meinen Befehl zu debuggen, muss ich wissen, wie viel SQL-Abfrage während der Befehlsausführung ausgeführt wurde. Und wenn es möglich ist, zeigen Sie diese Anfragen (wie der Symfony Profiler tun)Symfony2 - Anzahl der SQL-Anfragen

(Ich habe das gleiche Problem mit AJAX-Anfragen. Wenn ich eine AJAX-Anfrage machen, kann ich nicht wissen, wie viele Anfragen während der Anfrage ausgeführt wurden Wenn Sie eine Idee haben ...)

Vielen Dank im Voraus für jeden, der mir vielleicht ein paar Ideen geben kann. :)

Antwort

4

Sie können die Lehre Protokollierung wie aktivieren:

$doctrine = $this->get('doctrine'); 
$doctrine = $this->getDoctrine();  
$em = $doctrine->getConnection(); 

// $doctrine->getManager() did not work for me 
// (resulted in $stack->queries being empty array) 

$stack = new \Doctrine\DBAL\Logging\DebugStack(); 
$em->getConfiguration()->setSQLLogger($stack); 

... // do some queries 

var_dump($stack->queries); 

Sie können gehen, das zu sehen: http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/

Cesar zurückzukehren, was Cesar besitzen. Ich finde es hier: Count queries to database in Doctrine2

+0

Danke, ich werde das sehen :) – graille

+0

Ich mag diese Lösung. Guter Ratschlag –

0

Sie können diese ganze Logik in das Domänenmodell einfügen und den Befehl nur als Aufrufer behandeln. Dann können Sie das gleiche Domänenmodell mit dem Controller unter Verwendung von www und Profiler zur Diagnose verwenden.

Zweitens sollten Sie einen Integrationstest dafür haben und Sie können die Ausführungszeit mit diesem Test überprüfen.

Verwandte Themen