Comparte en Facebook Twitter Google+

Clockwork, una herramienta para depurar tus aplicaciones de PHP

Clockwork es una extensión para el navegador que permite depurar aplicaciones PHP y nos brinda información de los datos de las peticiones, las consultas a la base de datos, eventos disparados, sesiones, las vistas, caché, entre muchas otras funciones.

Su principal ventaja es que es un componente del lado del servidor, es decir, no inyecta nada al código de la aplicación, sino que hace uso de una extensión de Chrome o Firefox para mostrar la información. Opcionalmente, si no quieres instalar la extensión en tu navegador puedes usar la interfaz web de la herramienta. Tiene soporte para Laravel, Lumen, Slim y proyectos de PHP en general.

Instalación para Laravel

La instalación en un proyecto la hacemos por medio de Composer ejecutando en la consola:

composer require itsgoingd/clockwork

Este paquete tiene soporte para el auto-descubrimiento de paquetes de Laravel 5.5, por tanto, si tu proyecto tiene esta versión o superior no necesitas realizar ningún paso adicional. Pero si es una versión anterior debes registrar el Service Provider del paquete en el archivo config/app.php:

Además, puedes registrar el alias para usar el facade:

Recuerda que esta configuración es solo para proyectos de Laravel en versión inferior a 5.5.

 ¿Cómo usarlo?

Para ver la información de la aplicación recolectada por Clockwork puedes instalar una extensión o plugin en tu navegador:

No olvides cambiar http://tuaplicacion.app/ por la URL que has definido para tu aplicación.

Configuración

Por defecto, Clockwork está disponible solo cuando la aplicación está en modo debug, es decir, en el archivo .env la variable APP_DEBUG está establecida en true. Sin embargo, puedes activarlo o desactivarlo a tu gusto, por medio de su archivo de configuración, el cual publicas en el directorio config de tu proyecto ejecutando:

php artisan vendor:publish

Al ejecutar el comando debes escoger la opción para Clockwork. También puedes agregar --provider para indicarlo directamente al ejecutar el comando:

En este archivo también puedes configurar: la activación o desactivación de la interfaz gráfica, la forma en que Clockwork almacena la información de la aplicación (archivos o sql), el tiempo de expiración, qué información no quieres que se almacene, entre otras funciones.

Características

Requests

Puedes ver la última petición ejecutada así como datos de la cabecera y cookies. Adicionalmente puedes ver las peticiones anteriores haciendo clic en load more.

Clockwork Requests

Timeline

Clockwork presenta una línea de tiempo de la ejecución de algunos eventos generales de la aplicación.

De igual forma, puedes crear tus propios eventos con los cuales puedes conocer cuánto tiempo toma la ejecución de un evento. Por ejemplo:

Para marcar el punto de comienzo con un nombre único name y su descripción:

clock()->startEvent('api-call', "Loading data via API");

Luego para marcar el punto de fin después de ejecutarse el evento:

clock()->endEvent('api-call').

Clockwork timeline

Logs

Clockwork muestra en un tab todos los mensajes que son registrados como logs por la aplicación.

Adicionalmente, puedes usar el helper clock() para agregar nuevos mensajes o variables (incluso arreglos y objetos). Estos últimos los muestra en su representación JSON. Por ejemplo: clock('Usuario cambió contraseña');.

Puedes enviar múltiples variables a la vez:

También, puedes especificar el nivel del log usando los métodos emergency, alert, critical, error, warning, notice, info y debug, por ejemplo:

clock()->info('Usuario registrado');

Como resultado Clockwork te mostrará:

Clockwork logs

Database

Clockwork te muestra exactamente donde fue hecha la consulta a la base de datos (nombre de la clase y el número de línea del archivo), el modelo asociado, la consulta SQL y el tiempo de ejecución:

clockwork database tab

Caché

Puedes ver con Clockwork información de las claves o keys presentes en la aplicación así como su interacción con ella: cuales fueron leídas, escritas, eliminadas:

clockwork cache tab

Eventos

Clockwork te muestra información de los eventos de tu aplicación que han sido disparados, en cual clase, que datos fueron enviados y que listeners se ejecutaron:

clockwork events tab

Por defecto, vienen desactivadas las opciones Views y Routes, debido a que la información recogida por Clockwork sobre ellas puede ocupar bastante espacio en disco. Sin embargo, si las necesitas puedes activarlas desde el archivo de configuración config/clockwork.php, eliminándolas del arreglo filter.

Es una interesante alternativa a Laravel Debugbar que podemos usar para hacer depuración de los proyectos de Laravel y PHP en general. Para mayor información puedes visitar su repositorio en Github y su sitio web.

Si te ha gustado este post no dejes de compartirlo en tus redes. También puedes unirte a nuestro listado de emails y seguirnos en Twitter para mantenerte al día:

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Aprende desarrollo web con Laravel, Vue.js y mucho más a partir de 9 USD al mes: ver planes.