Profiling con Doctrine en 10 minutos

Para poder ver que queries se ejecutan podemos usar el Profiler de Doctrine (solo en la versión 1.2).

Este Profiler es un Listener de la conexión creada por Doctrine_Manager.

Para hacerlo simple lo ejecutamos con register register_shutdown_function que es una función de PHP que llama a una función callback cuando finaliza el script.

$connection = Doctrine_Manager::connection('mysql://...');

$profiler = new Doctrine_Connection_Profiler();
$connection->setListener($profiler);

register_shutdown_function(function () use ($profiler) {
	ob_start();
	echo "REQUEST URI: " . $_SERVER['REQUEST_URI'] . "\n\n";
	$time = 0;
	foreach ($profiler as $event) {
	    $time += $event->getElapsedSecs();
	    echo "-- " . $event->getName() . " " . sprintf("%f", $event->getElapsedSecs()) . "s\n";
	    echo $event->getQuery() . "\n";
	    $params = $event->getParams();
	    if( ! empty($params)) {
	    	echo "-- Params:\n/*\n";
	        var_export($params);
	    	echo "\n*/\n";
	    }
	    echo "\n\n-- -----\n\n";
	}
	echo "-- Total time: " . $time  . "\n";
	$content = ob_get_clean();
	file_put_contents('/tmp/profiler_' . time() . '.sql', $content);
});

El resultado lo guardo en un archivo en /tmp con la extensión .sql así cuando lo abro con gedit me muestra las queries con la sintaxis resaltada.
Rápido y simple.

Tags: , ,

Comments are closed.