【问题标题】:How can I get doctrine query count from symfony2 profiler in production environment?如何在生产环境中从 symfony2 探查器获取教义查询计数?
【发布时间】:2014-09-22 22:40:21
【问题描述】:

我需要查看在 Symfony2 应用的生产环境中执行了多少条 sql 查询。

我尝试在我的控制器中进行跟踪,但它显示我编码的字符串作为结果。

<?php
.....
.....
.....
class DefaultController extends Controller
{

    /**
     * @Route("/")
     * @Template()
     */
    public function testAction()
    {
        $profile = $this->container->get('profiler')->loadProfile($token);
        $data = $this->container->get('profiler')->export($profile);       
        print_r($data);
    }
}
.....
.....

【问题讨论】:

  • 在 MySQL 中可以使用查询日志。信息可用here
  • 这是在 sql server 级别,我需要特定路由(url)和控制器或服务中的 sql 查询计数。
  • 默认情况下,分析器仅在开发中可用。这是有道理的,因为它确实显着减慢了速度。 symfony.com/doc/current/cookbook/profiler/matchers.html
  • @Cerad:是的,我回答了,但你说得对。 WP 未在开发环境中注册
  • 另一种方法是使用 Doctrine 2 SQL 记录器。 doctrine-project.org/api/dbal/2.4/…。这是分析器使用的,但我没有在 Symfony 2 内部配置一个的好例子。

标签: symfony symfony-2.1 symfony-2.3


【解决方案1】:

不建议在生产环境中也启用探查器,但是...

进入控制器操作,您可以执行以下操作

$profiler = $this->container->get('profiler');
$profile = $profiler->loadProfile($token);

$queries = $profile->getCollector('db')->getQueries();
echo count($queries); //echo is just an example, you could - of course -
                      //use something like a logger

【讨论】:

  • 好的,我在 dev evnironment 中尝试了上述方法,得到“错误:在非对象上调用成员函数 getCollector()”从 $token = $this->get('security .token_storage')->getToken();有什么想法吗?
猜你喜欢
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 2018-09-21
  • 2015-05-30
  • 2012-01-01
  • 1970-01-01
相关资源
最近更新 更多