From f28fe4e6b40d17f208ab0ffefbcad3815930b89f Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Thu, 7 Feb 2019 11:25:46 +0100 Subject: [PATCH 1/3] Merged some profiler docs into a single main Profiler article --- _build/redirection_map | 3 + _images/profiler/web-interface.png | Bin 0 -> 75628 bytes profiler.rst | 179 +++++++++++++++++++++++++++-- profiler/matchers.rst | 66 ----------- profiler/profiling_data.rst | 46 -------- profiler/wdt_follow_ajax.rst | 45 -------- 6 files changed, 174 insertions(+), 165 deletions(-) create mode 100644 _images/profiler/web-interface.png delete mode 100644 profiler/matchers.rst delete mode 100644 profiler/profiling_data.rst delete mode 100644 profiler/wdt_follow_ajax.rst diff --git a/_build/redirection_map b/_build/redirection_map index 5bc5ef3a0df..5fbe425b16e 100644 --- a/_build/redirection_map +++ b/_build/redirection_map @@ -405,3 +405,6 @@ /console/logging /console /reference/forms/twig_reference /form/form_customization /form/rendering /form/form_customization +/profiler/matchers /profiler +/profiler/profiling_data /profiler +/profiler/wdt_follow_ajax /profiler diff --git a/_images/profiler/web-interface.png b/_images/profiler/web-interface.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6c60618924a9af44f88a61132e12838c59a811 GIT binary patch literal 75628 zcmbTdcUV(P*EX)lf)$Qkx{8Q`fQobiDgp`;q(f*bHMGzJgklAi4g%6eN@xLrK!6ZX z=?M@akVrxTNGF5|ffmXP@<28M!d!UIXkQ(`GhL*df*YkJw?zjFR)5|*bgQZmdGD-A zM%59MJjw;{Vu9Smy*7W|`{UjB3tfj?qYMOTTI}+-xJ3a_YC+)0n=29$qRw}1kL>@WNw?MIP&4)~FC5TPl3VD17HjTC4O zV5EnA#%pX5G`ck4g@x}2UWL!RKK5IeU4sEPZfBZZc>}8Yq3dZ@``FH|BK1L{8AMJb zjxMg&a`v~B7idpr0Do3MSGCYi>dvy=dm&3p=VwG(VfX89@st0Su*@{O?g#ewfIBcQ zBW|dwZj{<>VS)WJB|OVG)r@tC1-w-^EoUZXzipUg>KD?!tW#X(NDgL1@F(&asSkn} z*(sOhkwR^Kc>)UpTeTD`TwGb8FIOn?HCb^NzLD(KQ-Wvx*%gY-ZBT*TLU${w!~l7d zhaZAwZLYtRBua)WrQ+%=sr0(5akneVzC5}42ZmeS2vabsYP@?%J4?S5>g z0q610X^dRhQ}y^{?Q)Tb z>O(iEO^TmqLU1R7c~G2?fjKRkp-dhMGw2ve_jNiLcxick*`_)D$}xCWjtgjvUNni! zMKv*kCVL`k^-}wn>sJ7c#R&FC2=iIy?`Hq2)nk-BYCT&51c-9C%rtz=?vrRQeQzKp z+$Rg#pc-K|4=2YT=7cq$AqT{y+S2&npWp1yLuE(~{OasYjk4WwG|rdncUUo{@y`mU zef*gD@qEH?DNS$2n%VmLrh7oXqJyKoU261VXPLrW!ee8CEFp-Tx-Ws&wUPdg)_cYI z4|C?#FUE`+>z&u1xz?SMWSo4-1ATr+4

5V6_UP7~AbPUn|q0H?loeyT!w8Uemlu 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 G2~7aVK7l;| literal 0 HcmV?d00001 diff --git a/profiler.rst b/profiler.rst index 6deabbe4703..474dbb46101 100644 --- a/profiler.rst +++ b/profiler.rst @@ -2,10 +2,8 @@ Profiler ======== The profiler is a powerful **development tool** that gives detailed information -about the execution of any request. - -**Never** enable the profiler in production environments as it will lead to -major security vulnerabilities in your project. +about the execution of any request. **Never** enable the profiler in production +environments as it will lead to major security vulnerabilities in your project. Installation ------------ @@ -17,10 +15,175 @@ install the profiler before using it: $ composer require --dev symfony/profiler-pack +Now browse any page of your application in the development environment to let +the profiler collect information. Then, click on any element of the debug +toolbar injected at the bottom of your pages to open the web interface of the +Symfony Profiler, which will look like this: + +.. image:: /_images/profiler/web-interface.png + :align: center + +Accessing Profiling Data Programmatically +----------------------------------------- + +Most of the times, the profiler information is accessed and analyzed using its +web-based interface. However, you can also retrieve profiling information +programmatically thanks to the methods provided by the ``profiler`` service. + +When the response object is available, use the +:method:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler::loadProfileFromResponse` +method to access to its associated profile:: + + // ... $profiler is the 'profiler' service + $profile = $profiler->loadProfileFromResponse($response); + +When the profiler stores data about a request, it also associates a token with it; +this token is available in the ``X-Debug-Token`` HTTP header of the response. +Using this token, you can access the profile of any past response thanks to the +:method:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler::loadProfile` method:: + + $token = $response->headers->get('X-Debug-Token'); + $profile = $profiler->loadProfile($token); + +.. tip:: + + When the profiler is enabled but not the web debug toolbar, inspect the page + with your browser's developer tools to get the value of the ``X-Debug-Token`` + HTTP header. + +The ``profiler`` service also provides the +:method:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler::find` method to +look for tokens based on some criteria:: + + // gets the latest 10 tokens + $tokens = $profiler->find('', '', 10, '', '', ''); + + // gets the latest 10 tokens for all URL containing /admin/ + $tokens = $profiler->find('', '/admin/', 10, '', '', ''); + + // gets the latest 10 tokens for local POST requests + $tokens = $profiler->find('127.0.0.1', '', 10, 'POST', '', ''); + + // gets the latest 10 tokens for requests that happened between 2 and 4 days ago + $tokens = $profiler->find('', '', 10, '', '4 days ago', '2 days ago'); + +Data Collectors +--------------- + +The profiler gets its information using some services called "data collectors". +Symfony comes with several collectors that get information about the request, +the logger, the routing, the cache, etc. + +Run this command to get the list of collectors actually enabled in your app: + +.. code-block:: terminal + + $ php bin/console debug:container --tag=data_collector + +You can also :doc:`create your own data collector ` to +store any data generated by your app and display it in the debug toolbar and the +profiler web interface. + +Enabling the Profiler Conditionally +----------------------------------- + +.. caution:: + + The possibility to use a matcher to enable the profiler conditionally was + removed in Symfony 4.0. + +Symfony Profiler cannot be enabled/disabled conditionally using matchers, because +that feature was removed in Symfony 4.0. However, you can use the ``enable()`` +and ``disable()`` methods of the :class:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler` +class in your controllers to manage the profiler programmatically:: + + use Symfony\Component\HttpKernel\Profiler\Profiler; + // ... + + class DefaultController + { + // ... + + public function someMethod(?Profiler $profiler) + { + // $profiler won't be set if your environment doesn't have the profiler (like prod, by default) + if (null !== $profiler) { + // if it exists, disable the profiler for this particular controller action + $profiler->disable(); + } + + // ... + } + } + +In order for the profiler to be injected into your controller you need to +create an alias pointing to the existing ``profiler`` service: + +.. configuration-block:: + + .. code-block:: yaml + + # config/services_dev.yaml + services: + Symfony\Component\HttpKernel\Profiler\Profiler: '@profiler' + + .. code-block:: xml + + + + + + + + + + + .. code-block:: php + + // config/services_dev.php + use Symfony\Component\HttpKernel\Profiler\Profiler; + + $container->setAlias(Profiler::class, 'profiler'); + +Updating the Web Debug Toolbar After AJAX Requests +-------------------------------------------------- + +`Single-page applications`_ (SPA) are web applications that interact with the +user by dynamically rewriting the current page rather than loading entire new +pages from a server. + +By default, the debug toolbar displays the information of the initial page load +and doesn't refresh after each AJAX request. However, you can set the +``Symfony-Debug-Toolbar-Replace`` header to a value of ``1`` in the response to +the AJAX request to force the refresh of the toolbar:: + + $response->headers->set('Symfony-Debug-Toolbar-Replace', 1); + +Ideally this header should only be set during development and not for +production. To do that, create an :doc:`event subscriber ` +and listen to the :ref:`kernel.response` +event:: + + use Symfony\Component\HttpKernel\Event\FilterResponseEvent; + + // ... + + public function onKernelResponse(FilterResponseEvent $event) + { + if (!$this->getKernel()->isDebug()) { + return; + } + + $response = $event->getResponse(); + $response->headers->set('Symfony-Debug-Toolbar-Replace', 1); + } + .. toctree:: - :maxdepth: 1 + :hidden: profiler/data_collector - profiler/profiling_data - profiler/matchers - profiler/wdt_follow_ajax + +.. _`Single-page applications`: https://en.wikipedia.org/wiki/Single-page_application diff --git a/profiler/matchers.rst b/profiler/matchers.rst deleted file mode 100644 index ed6ae8afdfd..00000000000 --- a/profiler/matchers.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. index:: - single: Profiling; Matchers - -How to Use Matchers to Enable the Profiler Conditionally -======================================================== - -.. caution:: - - The possibility to use a matcher to enable the profiler conditionally was - removed in Symfony 4.0. - -Symfony Profiler cannot be enabled/disabled conditionally using matchers, because -that feature was removed in Symfony 4.0. However, you can use the ``enable()`` -and ``disable()`` methods of the :class:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler` -class in your controllers to manage the profiler programmatically:: - - use Symfony\Component\HttpKernel\Profiler\Profiler; - // ... - - class DefaultController - { - // ... - - public function someMethod(?Profiler $profiler) - { - // $profiler won't be set if your environment doesn't have the profiler (like prod, by default) - if (null !== $profiler) { - // if it exists, disable the profiler for this particular controller action - $profiler->disable(); - } - - // ... - } - } - -In order for the profiler to be injected into your controller you need to -create an alias pointing to the existing ``profiler`` service: - -.. configuration-block:: - - .. code-block:: yaml - - # config/services_dev.yaml - services: - Symfony\Component\HttpKernel\Profiler\Profiler: '@profiler' - - .. code-block:: xml - - - - - - - - - - - .. code-block:: php - - // config/services_dev.php - use Symfony\Component\HttpKernel\Profiler\Profiler; - - $container->setAlias(Profiler::class, 'profiler'); diff --git a/profiler/profiling_data.rst b/profiler/profiling_data.rst deleted file mode 100644 index 9eab1d91e97..00000000000 --- a/profiler/profiling_data.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. index:: - single: Profiling; Profiling data - -How to Access Profiling Data Programmatically -============================================= - -Most of the times, the profiler information is accessed and analyzed using its -web-based visualizer. However, you can also retrieve profiling information -programmatically thanks to the methods provided by the ``profiler`` service. - -When the response object is available, use the -:method:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler::loadProfileFromResponse` -method to access to its associated profile:: - - // ... $profiler is the 'profiler' service - $profile = $profiler->loadProfileFromResponse($response); - -When the profiler stores data about a request, it also associates a token with it; -this token is available in the ``X-Debug-Token`` HTTP header of the response. -Using this token, you can access the profile of any past response thanks to the -:method:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler::loadProfile` method:: - - $token = $response->headers->get('X-Debug-Token'); - $profile = $profiler->loadProfile($token); - -.. tip:: - - When the profiler is enabled but not the web debug toolbar, inspect the page - with your browser's developer tools to get the value of the ``X-Debug-Token`` - HTTP header. - -The ``profiler`` service also provides the -:method:`Symfony\\Component\\HttpKernel\\Profiler\\Profiler::find` method to -look for tokens based on some criteria:: - - // gets the latest 10 tokens - $tokens = $profiler->find('', '', 10, '', '', ''); - - // gets the latest 10 tokens for all URL containing /admin/ - $tokens = $profiler->find('', '/admin/', 10, '', '', ''); - - // gets the latest 10 tokens for local POST requests - $tokens = $profiler->find('127.0.0.1', '', 10, 'POST', '', ''); - - // gets the latest 10 tokens for requests that happened between 2 and 4 days ago - $tokens = $profiler->find('', '', 10, '', '4 days ago', '2 days ago'); diff --git a/profiler/wdt_follow_ajax.rst b/profiler/wdt_follow_ajax.rst deleted file mode 100644 index 7918d281e54..00000000000 --- a/profiler/wdt_follow_ajax.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. index:: - single: Profiling: WDT Auto-update after AJAX Request - -How to Make the Web Debug Toolbar Auto-update After AJAX Requests -================================================================= - -For single page applications it would be more convenient if the toolbar -showed the information for the most recent AJAX request instead of the -initial page load. - -By setting the ``Symfony-Debug-Toolbar-Replace`` header to a value of ``1`` in the -AJAX request, the toolbar will be automatically reloaded for the request. The -header can be set on the response object:: - - $response->headers->set('Symfony-Debug-Toolbar-Replace', 1); - -Only Setting the Header During Development -------------------------------------------- - -Ideally this header should only be set during development and not for -production. This can be accomplished by setting the header in a -:ref:`kernel.response ` event listener:: - - use Symfony\Component\HttpKernel\Event\FilterResponseEvent; - - // ... - - public function onKernelResponse(FilterResponseEvent $event) - { - $response = $event->getResponse(); - - $response->headers->set('Symfony-Debug-Toolbar-Replace', 1); - } - -.. seealso:: - - Read more about :doc:`Symfony events `. - -If you are using Symfony Flex, you should define your event listener service in the -``config/services_dev.yml`` file so that it only exists in the ``dev`` environment. - -.. seealso:: - - Read more on - :doc:`creating dev only services `. From a5149c4a5c9c0007796ff6e5fd17ccd3185d7577 Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Thu, 7 Feb 2019 11:28:04 +0100 Subject: [PATCH 2/3] - --- profiler.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/profiler.rst b/profiler.rst index 474dbb46101..60354d8c721 100644 --- a/profiler.rst +++ b/profiler.rst @@ -22,6 +22,7 @@ Symfony Profiler, which will look like this: .. image:: /_images/profiler/web-interface.png :align: center + :class: with-browser Accessing Profiling Data Programmatically ----------------------------------------- From aba88fa5ee096194ffba18ec7b5d737767fbc631 Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Thu, 7 Feb 2019 15:27:07 +0100 Subject: [PATCH 3/3] Added a Stopwatch section in the new Profiler article --- components/stopwatch.rst | 5 ++--- profiler.rst | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/components/stopwatch.rst b/components/stopwatch.rst index c792b0eb90f..1619070efb7 100644 --- a/components/stopwatch.rst +++ b/components/stopwatch.rst @@ -63,9 +63,8 @@ Symfony Profiler tool uses categories to nicely color-code different events. .. tip:: - When you want to show events in the Symfony profiler, autowire - ``Symfony\Component\Stopwatch\Stopwatch`` into your service. Each category - is shown on a separate line. + Read :ref:`this article ` to learn more about + integrating the Stopwatch component into the Symfony profiler. Periods ------- diff --git a/profiler.rst b/profiler.rst index 60354d8c721..6fe1840bab9 100644 --- a/profiler.rst +++ b/profiler.rst @@ -85,6 +85,35 @@ You can also :doc:`create your own data collector ` to store any data generated by your app and display it in the debug toolbar and the profiler web interface. +.. _profiler-timing-execution: + +Timing the Execution of the Application +--------------------------------------- + +If you want to measure the time some tasks take in your application, there's no +need to create a custom data collector. Instead, use the `Stopwatch component`_ +which provides utilities to profile code and displayes the results on the +"Performance" panel of the Profiler web interface. + +When using :ref:`autowiring `, type-hint any argument with +the :class:`Symfony\\Component\\Stopwatch\\Stopwatch` class and Symfony will +inject the Stopwatch service. Then, use the ``start()``, ``lapse()`` and +``stop()`` methods to measure time:: + + // a user signs up and the timer starts... + $stopwatch->start('user-sign-up'); + + // ...do things to sign up the user... + $stopwatch->lapse('user-sign-up'); + + // ...the sign up process is finished + $stopwatch->stop('user-sign-up'); + +.. tip:: + + Consider using a professional profiler such as `Blackfire`_ to measure and + analyze the execution of your application in detail. + Enabling the Profiler Conditionally ----------------------------------- @@ -188,3 +217,5 @@ event:: profiler/data_collector .. _`Single-page applications`: https://en.wikipedia.org/wiki/Single-page_application +.. _`Stopwatch component`: https://symfony.com/components/Stopwatch +.. _`Blackfire`: https://blackfire.io/