Laravel Horizon para PHP: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Laravel Horizon: Monitoramento e Gerenciamento Poderoso de Filas Redis em PHP

No desenvolvimento web moderno com PHP, o processamento assíncrono de tarefas através de filas tornou-se um padrão de fato. O Laravel oferece suporte nativo a filas, mas quando o projeto cresce, gerenciar dezenas de workers, monitorar seu desempenho e diagnosticar problemas se torna complexo. É aqui que o Laravel Horizon entra em cena — uma ferramenta poderosa para monitoramento e gerenciamento de filas Redis.

Horizon não é apenas um painel de monitoramento. É um sistema completo de gerenciamento de filas que oferece uma interface web elegante para acompanhar todos os aspectos do funcionamento das filas: número de tarefas processadas, tempo de execução, quantidade de erros, status dos workers e muito mais. Diferente da abordagem padrão, onde você inicia os workers manualmente, o Horizon os gerencia automaticamente, distribuindo a carga entre vários processos e balanceando-os de acordo com a demanda atual.

A principal vantagem do Horizon é sua integração com Redis. Ele utiliza o Redis não apenas como driver de fila, mas também como armazenamento para métricas e estado dos workers. Isso o torna incrivelmente rápido e escalável. Você pode executar o Horizon em vários servidores, e ele coletará dados de todos os workers em um único painel de controle. É a solução ideal para ambientes de produção, onde cada milissegundo importa.

Instalação

A instalação do Horizon é feita via Composer — o gerenciador de pacotes padrão para PHP. Certifique-se de ter o Composer instalado e que seu projeto use Laravel 5.5 ou superior.

composer require laravel/horizon

Após instalar o pacote, é necessário publicar seus arquivos de configuração e assets:

php artisan horizon:install

Este comando criará o arquivo de configuração config/horizon.php e registrará o service provider do Horizon. Também será criado o arquivo de rotas routes/horizon.php, se você estiver usando Laravel 8 ou superior.

Em seguida, adicione o provider no arquivo config/app.php (caso não tenha sido adicionado automaticamente):

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

Depois disso, execute as migrações para criar as tabelas necessárias para o funcionamento do Horizon (embora a lógica principal use Redis, alguns dados são armazenados no banco de dados):

php artisan migrate

Por fim, configure o Redis. Verifique se o servidor Redis está instalado e em execução, e se o arquivo .env possui os parâmetros de conexão corretos:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Primeiros Passos: Exemplo Mínimo Funcional

Após a instalação e configuração, você pode iniciar o Horizon e vê-lo em ação imediatamente.

Passo 1: Inicie o Horizon

No terminal, execute o comando:

php artisan horizon

Você verá o Horizon iniciar vários processos workers. Por padrão, ele cria três processos para processar tarefas da fila default.

Passo 2: Crie uma tarefa para a fila

Vamos criar uma tarefa simples que simula uma operação demorada:

<?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