我试图在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;
}
}
答案 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');
}