Как профилировать код с помощью компонента секундомера Symfony
Согласно документам говорится:
Компонент секундомера обеспечивает простой и последовательный способ измерения время выполнения определенных частей кода, чтобы вам не приходилось постоянно анализировать микро-время самостоятельно.
Я хочу профилировать свои вызовы REST API cURL и выполнение кода, чтобы сократить время, но я не уверен, как это сделать. То, что я сделал в своем коде, это поместил этот фрагмент кода:
$stopwatch->start('repsync', 'internal');
// the code goes here
$stopwatch->stop('repsync', 'internal');
Но так как это спокойный API, я не уверен как получить результаты профилировщика. Я смотрел на StopWatch
и обратите внимание getEvent
и getSectionEvents
, но опять же я не уверен, следует ли мне вызывать их напрямую и передавать результат регистратору монологов или есть какой-либо другой способ добиться этого. В нескольких словах: как я вижу результаты профилировщика при доступе к маршрутам через API RESTful? Какой-нибудь совет? Идеи?
1 answers
Вот как я справляюсь с этим.
Используйте twig для отображения данных вашего api в вашем контроллере:
return $this->render('MyApiBundle:Default:debug.html.twig', array('data' => $data));
Затем создайте шаблон "отладка" в Resources/views/Default/debug.html.twig
{% extends 'base.html.twig' %}
{% block body %}
Debug page
{{ dump(data) }}
{% endblock %}
В вашем браузере вызовите один из ваших URL-адресов API GET. Вы получите доступ к профилировщику Symfony и увидите свои данные.
Во время выполнения кода вы можете прослушивать события kernel.request и kernel.terminate.