Perfilando aplicaciones en Laravel

Nunca hay que dejar de lado el rendimiento de nuestra aplicación en cuanto a tiempo en que demora en procesar, consumo de memoria, consultas a la base de datos, etc. Se que existen herramientas más especializadas y profundas para perfilar aplicaciones PHP, pero en este caso hablaré de Laravel Profiler.

Laravel Profiler es un paquete aún en desarrollo – pero estable – que actualmente nos permite obtener información valiosa con respecto a nuestra aplicación:

  • Tiempo de ejecución de la aplicación
  • Línea de tiempo de nuestra aplicación
  • Número de consulta a la base de datos
  • Detalle de las consultas a la base de datos
  • Alerta sobre consultas repetidas
  • Tiempo de ejecución de cada consulta
  • Nos muestra las rutas de nuestra aplicación
  • Variables actuales disponibles (GET, POST, Session, Cookies, Server, Enviroment)
  • Número de archivos PHP cargados
  • Otros: assets cargados y herramientas relacionadas al DOM

INSTALAR LARAVEL PROFILER

Instalar un paquete en Laravel es bastante simple y como siempre nuestro amigo Composer nos facilita el mundo, por lo cual ejecuten en consola dentro de la raíz de su proyecto:

composer require onigoetz/profiler:dev-master

De manera automática agregará la dependencia a composer.json y procederá a descargar el paquete.

Luego vayan a app/config/app.php y agreguen a sus Providers:

'Onigoetz\Profiler\ProfilerServiceProvider'

Y en sus Aliases:

'Stopwatch' => 'Onigoetz\Profiler\Stopwatch'

Finalmente hay que publicar los assets del paquete, para ello en consola:

php artisan asset:publish onigoetz/profiler

CONFIGURAR LARAVEL PROFILER

El paquete ya viene con una configuración por defecto y sólo correrá cuando el enviroment no sea producción (eso lo administran desde bootstrap/start.php). Si desean cambiar alguna configuración, deben publicarlo:

php artisan config:publish onigoetz/profiler

El archivo será generado en app/config/packages/onigoetz/profiler, donde podrán administrar valores como activar o no activar el paquete, los assets, los paneles que se verán, asuntos de log y definir cuando una consulta a la base de datos es lenta para marcarla como tal.

ARRANCANDO LARAVEL PROFILER

Ahora sólo basta arrancar la aplicación y verán en la parte inferior derecha una barra como esta:

Barra Laravel Profiler

Barra Laravel Profiler

TIEMPO

El primer panel de tiempo muestra el tiempo de carga total de la aplicación y si lo abren mostrará una línea de tiempo en la que podrán ver lo que demoró cada acción de la aplicación. Este parte del panel aún está en desarrollo, pero si se fijan en la leyenda en un futuro mostrará por ejemplo cuanto tiempo tomó Eloquent, Blade, etc. Aún así ustedes pueden utilizar sus propias mediciones de esta manera:

Stopwatch::start('proceso a medir');
//proceso
Stopwatch::stop('proceso a medir');

BASE DE DATOS

Luego tenemos la base de datos, que muestra el número de consultas realizadas y si hacen clic podrán ver las consultas SQL y abajo las consultas repetidas – te felicita si no las repites :) -.

Laravel Profiler - Base de Datos

Laravel Profiler – Base de Datos

RUTAS

La siguiente opción muestra la cantidad de rutas de nuestra aplicación y el detalle de éstas, destacando la ruta actual.

VARIABLES

A continuación están las variables del request actual: $_GET, $_POST, $_FILES, $_COOKIE, $_SERVER, $_ENV y datos de la sesión.

LOG

Muestra los log’s generados por la aplicación en la consulta actual.

ARCHIVOS

Cantidad y listado de archivos cargados por la aplicación – no se impresionen por la cantidad -.

HERRAMIENTAS

Como comenté más arriba son herramientas para trabajar con el DOM y assets cargados.

RECOMENDACIONES

Al ser un paquete aún en desarrollo es ideal por lo menos una vez cada 2 o 3 semanas actualizar el paquete desde Composer para obtener los últimos cambios y funcionalidades. Y obviamente NO utilizar este paquete en aplicaciones en producción ya que muestra información crítica que en malas manos puede causar malos resultados.

ACTUALIZACIÓN (24/07/13): Desde le Comunidad Laravel en Español el miembro Stricken comparte otro paquete que me pareció también una muy buena opción para perfilar en Laravel: https://github.com/juy/profiler. El proceso de instalación se detalla en el enlace anterior.

ACTUALIZACIÓN 2 (03/10/13): Encontré otra opción bastante interesante para poder perfilar en Laravel, esta vez es un paquete que trabaja directo con Chrome y su DevTool: https://github.com/itsgoingd/clockwork-chrome

Anuncios

6 comments

  1. Niko Gracias en verdad, está cool, me ha ayudado de mucho, y que bueno que lo siguen mejorando, quizás quien sabe algún día hasta pueda funcionar en un servidor de producción y medir las demoras globales de cada click por persona :)

    Me gusta

Deja un comentario (puedes utilizar Markdown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s