2016-08-18 128 views
2

我正在为Symfony 2的捆绑软件创建控制台命令。此命令对数据库(Mysql)执行多个请求。为了调试我的命令,我需要知道在命令执行过程中执行了多少SQL查询。如果可能的话,显示这些请求(像Symfony分析器那样)Symfony2 - SQL请求的数量

(我有和AJAX请求相同的问题。当我发出AJAX请求时,我无法知道请求期间执行了多少查询,如果你有一个想法...)

谢谢你提前给任何人可能会给我一些想法。 :)

回答

4

您可以启用日志记录的学说,如:

$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); 

你可以去看到:http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/

要返回塞萨尔什么塞萨尔自己。我在这里找到它:Count queries to database in Doctrine2

+0

谢谢,我会看到:) – graille

+0

我喜欢这个解决方案。好的建议 –

0

您可以将所有这些逻辑放入域模型中,仅将命令视为调用者。然后,您可以使用www和profiler进行诊断的控制器使用相同的域模型。

第二件事是你应该对此进行集成测试,并且你可以用这个测试来验证执行时间。