Laravel Clockwork

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:

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.

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:

<?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');

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 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á:

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 cuales listeners se ejecutaron:

clockwork events tab

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:

Suscríbete a nuestro boletín

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

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.