2015-07-29 3 views
0

Я пытаюсь получить время загрузки моей страницы в Symfony 2 с помощью соответствующего маршрута/url, я хочу записать всю эту информацию в мою базу данных или в файл.Symfony 2 Data_collector.time

Для этого я хочу использовать панель инструментов отладки app_dev.php, где написана вся эта информация, но я не могу получить к ней доступ! Я нашел, что есть "DataCollector", но ничего, чтобы захватить его ...

В Symfony/SRC/Symfony/расслоении/frameworkBundle/RESSOURCES/Config/collectors.xml я нашел

<service id="data_collector.time" class="%data_collector.time.class%" public="false"> 
     <tag name="data_collector" template="@WebProfiler/Collector/time.html.twig" id="time" priority="255" /> 
     <argument type="service" id="kernel" on-invalid="ignore" /> 
    </service> 

Могу ли я сделать smoething с этой услугой?

Я нашел другой путь:

$this->container->get('profiler')->get('time'); 

Но у меня есть только StartTime не время загрузки!

Не мог бы кто-нибудь помочь мне в этом? Большое спасибо !

+0

Там куча информации в документации (http://symfony.com/doc/current/cookbook/profiler/data_collector.html), но помимо этого Я ничего не знаю. – qooplmao

+0

Да, я нашел дополнительную информацию о http://symfony.com/doc/2.3/cookbook/profiler/profiling_data.html, но я не могу делать то, что хочу :( – Krishnak

+0

Да, служба объявлена ​​как конфиденциальная ('public = "false"). Попробуйте ввести службу в пользовательскую службу и посмотреть, можете ли вы ее найти. Какую версию используемой структуры я думаю, что вы можете использовать сборщик только в среде sf dev. – Matteo

ответ

1

Вы можете решить эту проблему по-другому. Необходимая информация может быть легко получена в передней контроллера:

<?php 

use Symfony\Component\ClassLoader\ApcClassLoader; 
use Symfony\Component\HttpFoundation\Request; 

$loader = require_once __DIR__.'/../app/bootstrap.php.cache'; 

require_once __DIR__.'/../app/AppKernel.php'; 

$start = microtime(true); 

$kernel = new AppKernel('prod', false); 
$kernel->loadClassCache(); 

$request = Request::createFromGlobals(); 
$response = $kernel->handle($request); 
$response->send(); 
$kernel->terminate($request, $response); 

$finish = microtime(true); 
$elapsedTime = $finish - $start; 
$uri = $request->getUri(); 
// ... insert the URI and the elapsed time in the database 
+0

Он работает! Спасибо большое :) – Krishnak