Symfony StopWatch事件未出现在探查器时间轴中

时间:2014-10-18 06:32:10

标签: symfony

我试图在Symfony Profiler时间轴中获取额外的时间信息,但我无法获得任何内容。根据我读过的文档,它应该像下面的示例一样简单,但这不会导致任何其他信息出现在时间轴上。

我是否需要以某种方式让探查者知道我开始和停止的事件?

use Symfony\Component\Stopwatch\Stopwatch;

class DefaultController extends Controller
{
    public function testAction()
    {
        $stopwatch = new Stopwatch();
        $stopwatch->start('testController');

        usleep(1000000);

        $response = new Response(
            '<body>Hi</body>',
            Response::HTTP_OK,
            array('content-type' => 'text/html')
        );

        $event = $stopwatch->stop('testController');

        return $response;
    }
}

2 个答案:

答案 0 :(得分:19)

Symfony的探查器无法扫描所有秒表实例的代码并将其放入时间轴。您必须使用分析器提供的预配置秒表:

public function testAction()
{
    $stopwatch = $this->get('debug.stopwatch');
    $stopwatch->start('testController');

    // ...

    $event = $stopwatch->stop('testController');

    return $response;
}

但是,你的控制器已经在时间轴上......

答案 1 :(得分:0)

您应该将stopwacth作为服务注入到您的构造函数或特定函数中,这是因为Symfony 3.4:默认情况下服务是私有的。

testAction(\Symfony\Component\Stopwatch\Stopwatch $stopwatch) {
    $stopwatch->start('testController');

    // ...

    $event = $stopwatch->stop('testController');
}