Depuración y rendimiento de una aplicación en php (y por supuesto codeIgniter)
Enviado por miguelcarmona :: 11 de enero de 2010
PHP quick profiler es una librería para php5 que nos permite tener una consola extra donde poder revisar la ejecución de nuestra aplicación.
Es una gran librería que nos revela información variada como datos recibidos, clases iniciadas, el lugar donde las mismas se inician, número de consultas a la sql, consultas a la sql, tiempo de carga, memoria consumida por la aplicación, archivos incluidos y un largo etcétera.
Podéis hecharle un vistazo en http://particletree.com/examples/pqp/ aunque os dejo algunas capturas de sus distintos paneles:
La instalación y funcionamiento de dicha librería para una aplicación en php5 está muy explicada en la página del autor, por lo que no entraré en detalles
Hay un proyecto que consiste en integrar esta librería dentro del framework codeIgniter (PHP quick profiler for codeigniter).
Para descargar dicha librería, por comodidad, haremos uso de git. Para aquellos que no lo tengan instalado en openSuse, bastará con hacer un:
su -c 'zypper install git'
Procedemos a extraer una copia del código del repositorio git:
git clone git://github.com/danmorin/php-quick-profiler-for-codeigniter.git
Si accedemos a la carpeta descargada (php-quick-profiler-for-codeigniter), veremos 3 carpetas y un archivo readme. Para instalar la librería en codeIgniter deberemos copiar:
- Contenido de la carpeta app_config a application/config/ (si no utilizas los hooks de codeIgniter, sobre escribe el archivo sin pensarlo).
- Contenido de la carpeta app_libraries a application/libraries/
- Contenido de la carpeta app_plugins a application/plugins/ (si no dispone de esta carpeta, créela).
Sólo nos queda habilitar los hooks en el archivo application/config/config.php:
$config['enable_hooks'] = TRUE;
y especificar la línea:
$this->output->enable_profiler(TRUE);
en la función/es que deseemos para lanzar dicha consola.
Por comodidad, lo podemos incluir en el constructor de una clase y así se lanzará para todas sus funciones. Pero, ¿y si lo tengo en el constructor de varias clases y quiero que no se lance? En mi caso, he definido la variable $config[‘php-quick-profiler’] en application/config/config.php y en los constructores:
if( $this->config->item('php-quick-profiler') )
$this->output->enable_profiler(TRUE);
De esta forma, sólo bastaría con cambiar esta variable dentro del config para que se muestre la consola en aquellas clases que la especificamos.
Realmente es muy práctico para depurar una aplicación ya que localizamos rápidamente dónde se encuentra el problema.