Encontré una manera que creo que está bien para nuestro caso de uso. He creado un nuevo performance.php archivo en la carpeta web que se parece a esto:
<?php
/**
* This file is only used for doing realtime performance measurement
* Right now only the microtime is calculated, but in the future the
* xhproof module could be used: http://de2.php.net/manual/en/book.xhprof.php
*
* MAKE SURE TO NOT USE THIS FILE IN PRODUCTION FOR OTHER STUFF THAN REAL TIME
* PERFORMANCE MEASUREMENT
*/
$GLOBALS['PerformanceTwigExtensionMicrotime'] = microtime(true);
require_once __DIR__.'/app.php';
También registró una ramita de extensión que utiliza el mundial y calcula el tiempo transcurrido:
<?php
namespace Acme\DemoBundle\Extension;
class PerformanceTwigExtension extends \Twig_Extension {
public function getFunctions() {
return array(
'performance_exectime' => new \Twig_Function_Method($this, 'getExecTime')
);
}
public function getExecTime() {
if (!isset($GLOBALS['PerformanceTwigExtensionMicrotime'])) {
return 0;
}
$durationInMilliseconds = (microtime(true) - $GLOBALS['PerformanceTwigExtensionMicrotime']) * 1000;
return number_format($durationInMilliseconds, 3, '.', '');
}
public function getName() {
return "performance_extension";
}
}
Cuando queremos Para hacer algunas mediciones de rendimiento, simplemente podemos usar performance.php. La plantilla llama a la función y luego puede mostrar el tiempo de ejecución:
{{ performance_exectime() }}
Se da salida a 0 si la hora de inicio no está establecido (por ejemplo, cuando se utiliza el app.php normal), por lo que es seguro de usar en cualquier caso . Por otro lado, si alguien decide usar performance.php como punto de entrada, no debería romper nada ya que solo una variable global es diferente.
¿Qué ocurre con el sistema de creación de perfiles integrado? Tendrá características aún más impresionantes en 2.1, como un gráfico de tiempo detallado, algo similar a los gráficos de firebug y webkit. – gilden
Me gustaría hacer esto en el entorno de producción en una página especial. En este momento no tengo idea de cómo funciona el generador de perfiles. ¿Puedo simplemente "activarlo" de alguna manera cuando sirvo una acción y no tengo impacto en el rendimiento en todas las demás acciones? – Sgoettschkes
Para crear perfiles en un servidor de producción, es probable que desee examinar xhprof ... – greg0ire