Guía completa de Laravel Horizon para PHP: monitoreo y colas Redis

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Laravel Horizon: Monitoreo y gestión potente de colas Redis en PHP

En el desarrollo web moderno con PHP, el procesamiento asíncrono de tareas mediante colas se ha convertido en un estándar de facto. Laravel ofrece soporte integrado para colas, pero cuando el proyecto crece, gestionar decenas de workers, monitorear su rendimiento y diagnosticar problemas se vuelve complejo. Aquí es donde entra en juego Laravel Horizon, una herramienta potente para monitorear y administrar colas Redis.

Horizon no es solo un panel de control. Es un sistema completo de gestión de colas que proporciona una interfaz web elegante para rastrear todos los aspectos del funcionamiento de las colas: cantidad de tareas procesadas, tiempo de ejecución, número de errores, estado de los workers y mucho más. A diferencia del enfoque estándar, donde inicias los workers manualmente, Horizon los administra automáticamente, distribuyendo la carga entre múltiples procesos y balanceándolos según la carga actual.

La ventaja clave de Horizon es su integración con Redis. Utiliza Redis no solo como motor de colas, sino también como almacenamiento para métricas y estado de los workers. Esto lo hace increíblemente rápido y escalable. Puedes ejecutar Horizon en varios servidores y recopilará datos de todos los workers en un panel de control unificado. Es la solución ideal para entornos de producción donde cada milisegundo cuenta.

Instalación

La instalación de Horizon se realiza a través de Composer, el gestor de paquetes estándar para PHP. Asegúrate de tener Composer instalado y que tu proyecto use Laravel 5.5 o superior.

composer require laravel/horizon

Después de instalar el paquete, debes publicar sus archivos de configuración y assets:

php artisan horizon:install

Este comando creará el archivo de configuración config/horizon.php y registrará el proveedor de servicios de Horizon. También se creará un archivo de rutas routes/horizon.php si usas Laravel 8+.

A continuación, agrega el proveedor en config/app.php (si no se agregó automáticamente):

'providers' => [
    // Otros proveedores...
    App\Providers\HorizonServiceProvider::class,
],

Luego, ejecuta las migraciones para crear las tablas necesarias para el funcionamiento de Horizon (aunque la lógica principal usa Redis, algunos datos se almacenan en la base de datos):

php artisan migrate

Finalmente, configura Redis. Asegúrate de tener el servidor Redis instalado y en ejecución, y que en el archivo .env estén los parámetros de conexión correctos:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Inicio rápido: ejemplo mínimo funcional

Después de instalar y configurar, puedes iniciar Horizon de inmediato y verlo en acción.

Paso 1: Inicia Horizon

En la terminal, ejecuta el comando:

php artisan horizon

Verás cómo Horizon inicia varios procesos workers. Por defecto, crea tres procesos para procesar tareas de la cola default.

Paso 2: Crea una tarea para la cola

Vamos a crear una tarea simple que simule una operación larga:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class ProcessPodcast implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $podcastId;

    public function __construct($podcastId)
    {
        $this->podcastId = $podcastId;
    }

    public fun                    

Recommendations