Laravel Horizon pour PHP : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Laravel Horizon : Surveillance et gestion puissantes des files d'attente Redis en PHP

Dans le développement web moderne en PHP, le traitement asynchrone des tâches via des files d'attente est devenu un standard de facto. Laravel offre un support intégré pour les files d'attente, mais lorsque le projet grandit, gérer des dizaines de workers, suivre leurs performances et diagnostiquer les problèmes devient complexe. C'est là qu'intervient Laravel Horizon, un outil puissant pour la surveillance et la gestion des files d'attente Redis.

Horizon n'est pas qu'un simple tableau de bord. C'est un système complet de gestion des files d'attente qui fournit une interface web élégante pour suivre tous les aspects du fonctionnement des files : nombre de tâches traitées, temps d'exécution, nombre d'erreurs, statut des workers et bien plus encore. Contrairement à l'approche standard où vous lancez les workers manuellement, Horizon les gère automatiquement, répartissant la charge entre plusieurs processus et les équilibrant en fonction de la charge actuelle.

L'avantage clé d'Horizon est son intégration avec Redis. Il utilise Redis non seulement comme pilote de file d'attente, mais aussi comme stockage pour les métriques et l'état des workers. Cela le rend incroyablement rapide et scalable. Vous pouvez exécuter Horizon sur plusieurs serveurs, et il collectera les données de tous les workers dans un tableau de bord unifié. C'est la solution idéale pour un environnement de production où chaque milliseconde compte.

Installation

L'installation d'Horizon se fait via Composer, le gestionnaire de paquets standard pour PHP. Assurez-vous d'avoir Composer installé et que votre projet utilise Laravel 5.5 ou supérieur.

composer require laravel/horizon

Après l'installation du paquet, vous devez publier ses fichiers de configuration et ses assets :

php artisan horizon:install

Cette commande crée le fichier de configuration config/horizon.php et enregistre le fournisseur de services Horizon. Un fichier de routes routes/horizon.php est également créé si vous utilisez Laravel 8+.

Ensuite, ajoutez le fournisseur dans config/app.php (s'il n'a pas été ajouté automatiquement) :

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

Après cela, lancez les migrations pour créer les tables nécessaires au fonctionnement d'Horizon (bien que la logique principale utilise Redis, certaines données sont stockées en base de données) :

php artisan migrate

Enfin, configurez Redis. Assurez-vous que le serveur Redis est installé et en cours d'exécution, et que les paramètres de connexion corrects sont définis dans le fichier .env :

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Démarrage rapide : exemple minimal fonctionnel

Après l'installation et la configuration, vous pouvez lancer Horizon immédiatement et le voir en action.

Étape 1 : Lancez Horizon

Dans le terminal, exécutez la commande :

php artisan horizon

Vous verrez Horizon lancer plusieurs processus workers. Par défaut, il crée trois processus pour traiter les tâches de la file d'attente default.

Étape 2 : Créez une tâche pour la file d'attente

Créons une tâche simple qui simule une opération longue :

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