Maison cadre php Laravel 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 ?

Jun 17, 2023 am 11:00 AM
laravel horizon ironmq

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
Copier après la connexion
  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
Copier après la connexion
  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,
            ],
        ],
    ],
]
Copier après la connexion
  1. Démarrez Laravel Horizon

Utilisez la commande suivante pour démarrer Laravel Horizon :

php artisan horizon
Copier après la connexion

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
Copier après la connexion
  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
Copier après la connexion
  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);
Copier après la connexion

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 de ce site Web
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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP vs Flutter : le meilleur choix pour le développement mobile PHP vs Flutter : le meilleur choix pour le développement mobile May 06, 2024 pm 10:45 PM

PHP vs Flutter : le meilleur choix pour le développement mobile

Laravel - Commandes artisanales Laravel - Commandes artisanales Aug 27, 2024 am 10:51 AM

Laravel - Commandes artisanales

Analyse des avantages et inconvénients des outils de tests unitaires PHP Analyse des avantages et inconvénients des outils de tests unitaires PHP May 06, 2024 pm 10:51 PM

Analyse des avantages et inconvénients des outils de tests unitaires PHP

Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ? Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ? May 07, 2024 am 08:39 AM

Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ?

Architecture et pratique du système distribué PHP Architecture et pratique du système distribué PHP May 04, 2024 am 10:33 AM

Architecture et pratique du système distribué PHP

Comparaison des dernières versions de Laravel et CodeIgniter Comparaison des dernières versions de Laravel et CodeIgniter Jun 05, 2024 pm 05:29 PM

Comparaison des dernières versions de Laravel et CodeIgniter

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Jun 01, 2024 pm 01:34 PM

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ?

Tests unitaires de code PHP et tests d'intégration Tests unitaires de code PHP et tests d'intégration May 07, 2024 am 08:00 AM

Tests unitaires de code PHP et tests d'intégration

See all articles