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 ejecutados, 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
Gracias a Package Discovery disponible a partir de Laravel 5.5 con esto finaliza la instalación. Para versiones anteriores a Laravel 5.5 debes registrar el Service Provider del paquete en el archivo config/app.php
:
<?php // config/app.php return [ // ... 'providers' => [ // ... Clockwork\Support\Laravel\ClockworkServiceProvider::class ] ];
Además, puedes registrar el alias para usar el Facade:
<?php // config/app.php return [ // ... 'aliases' => [ // ... 'Clockwork' => Clockwork\Support\Laravel\Facade::class, ] ];
Recuerda que esta configuración es solo para proyectos de Laravel en versión inferior a 5.5.
Si estás usando la cache de rutas de Laravel deberás refrescarla usando el comando de Artisan route:cache
.
Usando Clockwork
Para ver e interacturar con los datos recolectados por Clockwork puedes instalar una extensión o plugin en tu navegador:
- Extensión para Chrome.
- Extensión para Firefox.
- En caso de no querer instalar una extensión puedes usar su interfaz web accediendo a http://tuaplicacion.app/__clockwork
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 elegir la opción para Clockwork. También puedes agregar --provider
para indicarlo directamente al ejecutar el comando:
php artisan vendor:publish --provider=Clockwork\Support\Laravel\ClockworkServiceProvider
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 de Clockwork
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.
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:
<?php
clock()->startEvent('api-call', "Loading data via API");
Luego para marcar el punto de fin después de ejecutarse el evento:
<?php clock()->endEvent('api-call');
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 en formato JSON.
Por ejemplo: clock('Usuario cambió contraseña');
.
Puedes enviar múltiples variables a la vez:
<?php $types = ['admin', 'user']; $people = Person::all(); clock($types, $people);
También, puedes especificar el nivel del log usando los métodos emergency
, alert
, critical,
error
, warning
, notice
, info
y debug
, por ejemplo:
<?php clock()->info('Usuario registrado');
Como resultado Clockwork te mostrará:
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:
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:
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 cuales listeners se ejecutaron:
Por defecto, vienen desactivadas las opciones Views y Routes, debido a que la información recolectada por Clockwork sobre ellas puede ocupar bastante espacio en disco. 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:
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.