10000 Profiler activation by fabpot · Pull Request #7859 · symfony/symfony · GitHub
[go: up one dir, main page]

Skip to content

Profiler activation #7859

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 26, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ CHANGELOG
2.3.0
-----

* [BC BREAK] added a way to disable the profiler (when disabling the profiler, it is now completely removed)
To get the same "disabled" behavior as before, set `enabled` to `true` and `collect` to `false`
* [BC BREAK] the `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RegisterKernelListenersPass` was moved
to `Component\HttpKernel\DependencyInjection\RegisterListenersPass`
* added ControllerNameParser::build() which converts a controller short notation (a:b:c) to a class::method notation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ private function addProfilerSection(ArrayNodeDefinition $rootNode)
->info('profiler configuration')
->canBeEnabled()
->children()
->booleanNode('collect')->defaultTrue()->end()
->booleanNode('only_exceptions')->defaultFalse()->end()
->booleanNode('only_master_requests')->defaultFalse()->end()
->scalarNode('dsn')->defaultValue('file:%kernel.cache_dir%/profiler')->end()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,13 @@ private function registerFragmentsConfiguration(array $config, ContainerBuilder
*/
private function registerProfilerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
{
if (!$this->isConfigEnabled($container, $config)) {
// this is needed for the WebProfiler to work even if the profiler is disabled
$container->setParameter('data_collector.templates', array());

return;
}

$loader->load('profiling.xml');
$loader->load('collectors.xml');

Expand Down Expand Up @@ -254,7 +261,7 @@ private function registerProfilerConfiguration(array $config, ContainerBuilder $
}
}

if (!$this->isConfigEnabled($container, $config)) {
if (!$config['collect']) {
$container->getDefinition('profiler')->addMethodCall('disable', array());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
<xsd:element name="matcher" type="profiler_matcher" minOccurs="0" maxOccurs="1" />
</xsd:all>

<xsd:attribute name="collect" type="xsd:string" />
<xsd:attribute name="only-exceptions" type="xsd:string" />
<xsd:attribute name="only-master-requests" type="xsd:string" />
<xsd:attribute name="enabled" type="xsd:string" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ protected static function getBundleDefaultConfig()
'username' => '',
'password' => '',
'lifetime' => 86400,
'collect' => true,
),
'translator' => array(
'enabled' => false,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

$container->loadFromExtension('framework', array(
'profiler' => array(
'enabled' => true,
),
));
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">

<framework:config>
<framework:profiler enabled="true" />
</framework:config>
</container>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
framework:
profiler:
enabled: true
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,20 @@ public function testEsi()
$this->assertTrue($container->hasDefinition('esi'), '->registerEsiConfiguration() loads esi.xml');
}

public function testProfiler()
public function testEnabledProfiler()
{
$container = $this->createContainerFromFile('full');
$container = $this->createContainerFromFile('profiler');

$this->assertTrue($container->hasDefinition('profiler'), '->registerProfilerConfiguration() loads profiling.xml');
$this->assertTrue($container->hasDefinition('data_collector.config'), '->registerProfilerConfiguration() loads collectors.xml');
$this->assertTrue($container->getParameter('profiler_listener.only_exceptions'));
$this->assertEquals('%profiler_listener.only_exceptions%', $container->getDefinition('profiler_listener')->getArgument(2));
}

public function testDisabledProfiler()
{
$container = $this->createContainerFromFile('full');

$calls = $container->getDefinition('profiler')->getMethodCalls();
$this->assertEquals('disable', $calls[0][0]);
$this->assertFalse($container->hasDefinition('profiler'), '->registerProfilerConfiguration() does not load profiling.xml');
$this->assertFalse($container->hasDefinition('data_collector.config'), '->registerProfilerConfiguration() does not load collectors.xml');
}

public function testRouter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ imports:

framework:
profiler:
enabled: false
enabled: true
collect: false
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use Symfony\Component\HttpKernel\Profiler\Profiler;
use Symfony\Component\HttpKernel\Debug\ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpFoundation\Response;

/**
Expand All @@ -26,7 +27,7 @@ class ExceptionController
protected $debug;
protected $profiler;

public function __construct(Profiler $profiler, \Twig_Environment $twig, $debug)
public function __construct(Profiler $profiler = null, \Twig_Environment $twig, $debug)
{
$this->profiler = $profiler;
$this->twig = $twig;
Expand All @@ -42,6 +43,10 @@ public function __construct(Profiler $profiler, \Twig_Environment $twig, $debug)
*/
public function showAction($token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

$exception = $this->profiler->loadProfile($token)->getCollector('exception')->getException();
Expand Down Expand Up @@ -76,6 +81,10 @@ public function showAction($token)
*/
public function cssAction($token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

$exception = $this->profiler->loadProfile($token)->getCollector('exception')->getException();
Expand Down
F42D
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class ProfilerController
* @param array $templates The templates
* @param string $toolbarPosition The toolbar position (top, bottom, normal, or null -- use the configuration)
*/
public function __construct(UrlGeneratorInterface $generator, Profiler $profiler, \Twig_Environment $twig, array $templates, $toolbarPosition = 'normal')
public function __construct(UrlGeneratorInterface $generator, Profiler $profiler = null, \Twig_Environment $twig, array $templates, $toolbarPosition = 'normal')
{
$this->generator = $generator;
$this->profiler = $profiler;
Expand All @@ -59,6 +59,10 @@ public function __construct(UrlGeneratorInterface $generator, Profiler $profiler
*/
public function homeAction()
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

return new RedirectResponse($this->generator->generate('_profiler_search_results', array('token' => 'empty', 'limit' => 10)));
Expand All @@ -76,6 +80,10 @@ public function homeAction()
*/
public function panelAction(Request $request, $token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

$panel = $request->query->get('panel', 'request');
Expand Down Expand Up @@ -112,6 +120,10 @@ public function panelAction(Request $request, $token)
*/
public function exportAction($token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

if (!$profile = $this->profiler->loadProfile($token)) {
Expand All @@ -131,6 +143,10 @@ public function exportAction($token)
*/
public function purgeAction()
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();
$this->profiler->purge();

Expand All @@ -146,6 +162,10 @@ public function purgeAction()
*/
public function importAction(Request $request)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

$file = $request->files->get('file');
Expand All @@ -170,6 +190,10 @@ public function importAction(Request $request)
*/
public function infoAction($about)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

return new Response($this->twig->render('@WebProfiler/Profiler/info.html.twig', array(
Expand All @@ -187,6 +211,10 @@ public function infoAction($about)
*/
public function toolbarAction(Request $request, $token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$session = $request->getSession();

if (null !== $session && $session->getFlashBag() instanceof AutoExpireFlashBag) {
Expand Down Expand Up @@ -234,6 +262,10 @@ public function toolbarAction(Request $request, $token)
*/
public function searchBarAction(Request $request)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

if (null === $session = $request->getSession()) {
Expand Down Expand Up @@ -275,6 +307,10 @@ public function searchBarAction(Request $request)
*/
public function searchResultsAction(Request $request, $token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

$profile = $this->profiler->loadProfile($token);
Expand Down Expand Up @@ -309,6 +345,10 @@ public function searchResultsAction(Request $request, $token)
*/
public function searchAction(Request $request)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

$ip = preg_replace('/[^:\d\.]/', '', $request->query->get('ip'));
Expand Down Expand Up @@ -353,6 +393,10 @@ public function searchAction(Request $request)
*/
public function phpinfoAction()
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

ob_start();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class RouterController
private $matcher;
private $routes;

public function __construct(Profiler $profiler, \Twig_Environment $twig, UrlMatcherInterface $matcher = null, RouteCollection $routes = null)
public function __construct(Profiler $profiler = null, \Twig_Environment $twig, UrlMatcherInterface $matcher = null, RouteCollection $routes = null)
{
$this->profiler = $profiler;
$this->twig = $twig;
Expand All @@ -51,6 +51,10 @@ public function __construct(Profiler $profiler, \Twig_Environment $twig, UrlMatc
*/
public function panelAction($token)
{
if (null === $this->profiler) {
throw new NotFoundHttpException('The profiler must be enabled.');
}

$this->profiler->disable();

if (null === $this->matcher || null === $this->routes) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@
<services>
<service id="web_profiler.controller.profiler" class="%web_profiler.controller.profiler.class%">
<argument type="service" id="router" on-invalid="null" />
<argument type="service" id="profiler" />
<argument type="service" id="profiler" on-invalid="null" />
<argument type="service" id="twig" />
<argument>%data_collector.templates%</argument>
<argument>%web_profiler.debug_toolbar.position%</argument>
</service>

<service id="web_profiler.controller.router" class="%web_profiler.controller.router.class%">
<argument type="service" id="profiler" />
<argument type="service" id="profiler" on-invalid="null" />
<argument type="service" id="twig" />
<argument type="service" id="router" on-invalid="null" />
</service>

<service id="web_profiler.controller.exception" class="%web_profiler.controller.exception.class%">
<argument type="service" id="profiler" />
<argument type="service" id="profiler" on-invalid="null" />
<argument type="service" id="twig" />
<argument>%kernel.debug%</argument>
</service>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ protected function setUp()
$this->container->setParameter('kernel.cache_dir', __DIR__);
$this->container->setParameter('kernel.debug', false);
$this->container->setParameter('kernel.root_dir', __DIR__);
$this->container->setParameter('profiler.class', array('Symfony\\Component\\HttpKernel\\Profiler\\Profiler'));
$this->container->register('profiler', $this->getMockClass('Symfony\\Component\\HttpKernel\\Profiler\\Profiler'))
->addArgument(new Definition($this->getMockClass('Symfony\\Component\\HttpKernel\\Profiler\\ProfilerStorageInterface')));
$this->container->setParameter('data_collector.templates', array());
Expand Down
0