Maison  >  Article  >  cadre php  >  Développement Laravel : Comment gérer les files d'attente avec Laravel Horizon et IronMQ ?

Développement Laravel : Comment gérer les files d'attente avec Laravel Horizon et IronMQ ?

王林
王林original
2023-06-17 11:00:001697parcourir

Avec le développement continu des activités Internet, une concurrence élevée et de grandes quantités de traitement de données sont devenues des défis auxquels les applications Internet doivent faire face. Afin de relever ces défis, l'utilisation de files d'attente pour gérer des tâches chronophages est devenue une solution courante dans le framework Laravel. Cet article explique comment utiliser Laravel Horizon et IronMQ pour gérer les files d'attente et leurs tâches.

1. Laravel Horizon

Laravel Horizon est un outil de gestion de file d'attente officiellement fourni par Laravel. Il fournit une interface Web belle et facile à utiliser qui peut nous aider à visualiser les tâches dans la file d'attente et à gérer les tâches dans la file d'attente. en temps réel, tâches, surveillance de l'état d'exécution de la file d'attente, etc. De plus, Laravel Horizon fournit également des fonctionnalités puissantes telles que des statistiques, des tentatives automatisées, des limites de fenêtre de temps et la gestion des exceptions pour les tâches dans la file d'attente.

  1. Installez Laravel Horizon

Utilisez Composer pour installer Laravel Horizon : Exécutez la commande suivante :

composer require laravel/horizon
  1. Publication du script Horizon

Après avoir exécuté la commande ci-dessus, vous devez également publier le script Laravel Horizon dans le projet en en exécutant la commande suivante Medium :

php artisan horizon:install
  1. Configuration de Laravel Horizon

Le fichier de configuration de Laravel Horizon se trouve dans config/horizon.php Vous pouvez configurer le comportement d'Horizon en modifiant ce fichier. Par exemple, définissez la connexion et le nom de la file d'attente. dans le fichier de configuration :

return [
    // 要运行的进程数
    'processes' => 10,

    // 队列连接设置
    'environments' => [
        'production' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default'],
                'balance' => 'simple',
                'processes' => 10,
            ],
            'supervisor-2' => [
                'connection' => 'redis',
                'queue' => ['high'],
                'balance' => 'simple',
                'processes' => 5,
            ],
        ],
    ],
]
  1. Démarrez Laravel Horizon

Utilisez la commande suivante pour démarrer Laravel Horizon :

php artisan horizon

Visitez http://localhost/horizon et vous verrez l'interface Web de Laravel Horizon.

2. IronMQ

IronMQ est un service de file d'attente de messages cloud hautes performances qui peut recevoir et transmettre de grandes quantités de données via l'API. Comparé à d'autres services de file d'attente de messages traditionnels, IronMQ est plus flexible et fiable, prend en charge plusieurs langues et systèmes d'exploitation et possède des fonctionnalités évolutives.

  1. Enregistrez IronMQ

Lors de l'enregistrement d'IronMQ, vous devez sélectionner le type de langue et l'emplacement du centre de données que vous utilisez. Après votre inscription, vous pourrez obtenir un identifiant de projet et un jeton, que nous utiliserons dans le code Laravel pour vous connecter à votre file d'attente IronMQ.

  1. Installer IronMQ

Dans le projet Laravel, utilisez Composer pour installer IronMQ :

composer require iron-io/iron_mq
  1. Configurer IronMQ

Dans le projet, nous pouvons configurer IronMQ en ajoutant les paramètres suivants au fichier .env :

IRON_PROJECT_ID=IronMQ_project_id
IRON_TOKEN=IronMQ_token
IRON_QUEUE_NAME=default
  1. Poussez la tâche vers IronMQ

Dans le projet Laravel, poussez la tâche vers IronMQ de la manière suivante :

IronMQ::queue('queue_name')->post($payload);

Où, $payload est le contenu de la tâche et queue_name est le nom de la file d'attente.

3. Utilisez Laravel Horizon et IronMQ pour gérer les files d'attente et les tâches

Voici le processus général d'utilisation de Laravel Horizon et IronMQ pour gérer les files d'attente et les tâches :

  1. Dans le projet Laravel, configurez Horizon et IronMQ et démarrez-les.
  2. Dans les projets Laravel, transférez les tâches vers IronMQ. Les données de tâches peuvent être enregistrées dans une base de données ou générées d'une autre manière.
  3. Laravel Horizon interroge IronMQ et consomme les tâches de la file d'attente. Vous pouvez afficher l'état de la file d'attente dans l'interface Web d'Horizon, y compris l'achèvement des tâches et les nouvelles tentatives de tâches.
  4. Laravel Horizon fournit de nombreux moyens utiles pour nous aider à améliorer la qualité du code lors de l'exécution des tâches. Par exemple, dans l'interface Web d'Horizon, nous pouvons afficher des informations détaillées telles que le nombre de lignes de code et le temps d'exécution d'une tâche, identifiant ainsi les goulots d'étranglement potentiels en termes de performances et les défauts de code dans nos tâches.
  5. Après le traitement de la tâche, si nécessaire, les résultats peuvent être transmis à d'autres systèmes ou des données fixes peuvent être renvoyées à l'extrémité appelante.

Conclusion

Cet article explique comment utiliser IronMQ comme service de file d'attente dans une application Laravel et le combiner avec Laravel Horizon pour gérer facilement les files d'attente et les tâches. En utilisant Laravel Horizon et IronMQ, nous pouvons effectuer des tâches asynchrones plus efficacement et détecter et résoudre plus facilement les problèmes qui surviennent lors de l'exécution des tâches.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn