Table des matières
1. Configuration de la file d'attente
二、创建队列任务
三、推入队列任务
四、消费队列任务
Maison cadre php Laravel Parlons de la façon de consommer les tâches de file d'attente dans Laravel

Parlons de la façon de consommer les tâches de file d'attente dans Laravel

Apr 14, 2023 pm 05:14 PM

Dans Laravel, les files d'attente sont un outil important pour le traitement asynchrone. Lors du traitement de tâches asynchrones, les files d'attente nous permettent d'utiliser les ressources du serveur de manière plus flexible et d'améliorer l'évolutivité et les performances des applications. Lorsque nous plaçons une tâche fastidieuse dans la file d'attente, l'application continuera à s'exécuter de manière asynchrone et le travail en arrière-plan sera traité par la file d'attente. Lorsqu'il y a des tâches dans la file d'attente qui doivent être traitées, nous devons consommer les tâches de la file d'attente. Cet article vous expliquera comment consommer la file d'attente Laravel.

1. Configuration de la file d'attente

Avant d'utiliser la fonction de file d'attente de Laravel, nous devons configurer la file d'attente dans le fichier de configuration .env : .env配置文件中进行如下参数配置:

QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Copier après la connexion

我们可以根据自己的需求进行配置,如果不需要密码可以将REDIS_PASSWORD设置为null。在本文中,我们使用Redis作为Laravel队列的驱动器。

二、创建队列任务

在Laravel中,我们可以使用如下命令创建一个队列任务:

php artisan make:job MyJob
Copier après la connexion

创建完毕后,在app/Jobs目录下将会生成一个名为MyJob的PHP文件,只需要在其中增加我们想要完成的任务代码即可。

三、推入队列任务

当我们完成队列任务的编写后,我们需要将其推入队列中。Laravel提供了多种方法将任务推入队列,以下是两种常用方法:

  1. 使用queue()方法
$this->dispatch(new MyJob($data));
Copier après la connexion
  1. 使用dispatch()方法
MyJob::dispatch($data);
Copier après la connexion

以上两种方法的参数都是MyJob类的实例,$data是传入任务的数据,可以是一个数组或对象。

四、消费队列任务

当我们推入了任务后,需要消费队列中的任务。Laravel提供了多种方式让我们去消费队列任务,比如:

  1. 使用php artisan queue:work命令

该命令可以在终端窗口中开启队列工作进程,用于监控队列中是否有任务需要处理。

php artisan queue:work --queue=queue-name --tries=3
Copier après la connexion

其中,queue-name是队列名称,tries是错误尝试次数,即当一个任务失败后,会让处理任务的进程进行多次重试。同时,在开启队列工作的进程中,我们也可以指定队列中的任务执行方式。

  1. 使用php artisan queue:listen命令

该命令也是用于监控队列任务的,与php artisan queue:work命令的区别是,它可以同时监控多个队列名称,并对队列任务进行分组。

  1. 使用supervisor守护进程

使用supervisor可以让我们在后台持续监控队列任务,防止队列工作进程意外终止。

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/path/to/worker.log
Copier après la connexion

以上是使用supervisor的一段示例代码,其中numprocs=8rrreee

Nous pouvons la configurer selon la nôtre. La configuration est requise Si un mot de passe n'est pas requis, REDIS_PASSWORD peut être défini sur null. Dans cet article, nous utilisons Redis comme pilote pour les files d'attente Laravel.

2. Créer une tâche de file d'attente

Dans Laravel, nous pouvons utiliser la commande suivante pour créer une tâche de file d'attente : 🎜rrreee🎜Après la création, un fichier nommé app/Jobs répertoire.code>MyJob, il suffit d'ajouter le code de la tâche que nous voulons accomplir. 🎜🎜3. Pousser la tâche de file d'attente 🎜🎜Après avoir fini d'écrire la tâche de file d'attente, nous devons la placer dans la file d'attente. Laravel fournit une variété de méthodes pour placer les tâches dans la file d'attente. Voici deux méthodes courantes : 🎜
  1. Utilisez la méthode queue()
rrreee<. ol start="2">
  • Utilisez la méthode dispatch()
  • rrreee🎜Les paramètres des deux méthodes ci-dessus sont des instances de MyJob code> classe. <code>$data sont les données transmises à la tâche, qui peuvent être un tableau ou un objet. 🎜🎜4. Consommer les tâches de la file d'attente🎜🎜Après avoir poussé la tâche, nous devons consommer les tâches dans la file d'attente. Laravel fournit diverses façons d'utiliser les tâches de file d'attente, telles que : 🎜
    1. Utilisez la commande php artisan queue:work
    🎜Cette commande peut être utilisé dans le terminal Ouvrez le processus de travail de la file d'attente dans la fenêtre pour surveiller s'il y a des tâches dans la file d'attente qui doivent être traitées. 🎜rrreee🎜 Parmi eux, queue-name est le nom de la file d'attente, tries est le nombre de tentatives d'erreur, c'est-à-dire que lorsqu'une tâche échoue, le processus qui gère la tâche sera réessayé plusieurs fois. Dans le même temps, lors du démarrage du travail en file d'attente, nous pouvons également spécifier la méthode d'exécution des tâches dans la file d'attente. 🎜
    1. Utilisez la commande php artisan queue:listen
    🎜Cette commande est également utilisée pour surveiller les tâches de file d'attente, et est la même as php La différence entre la commande artisan queue:work est qu'elle peut surveiller plusieurs noms de file d'attente en même temps et regrouper les tâches de file d'attente. 🎜
    1. Utiliser le démon supervisor
    🎜L'utilisation de supervisor nous permet de surveiller en permanence les tâches de file d'attente en arrière-plan , pour empêcher le processus de traitement de file d'attente de se terminer de manière inattendue. 🎜rrreee🎜Ce qui précède est un exemple de code utilisant supervisor, où numprocs=8 spécifie le nombre de processus de travail de file d'attente à ouvrir. 🎜🎜5. Résumé🎜🎜Ce qui précède explique comment consommer la file d'attente Laravel En fonction de vos propres besoins et de votre situation réelle, vous pouvez choisir d'utiliser les méthodes mentionnées ci-dessus pour consommer et traiter les tâches de file d'attente. le savez très bien, vous pouvez vous référer à la documentation officielle pour apprendre. 🎜

    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

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Commandes de chat et comment les utiliser
    1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    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)

    Comment utiliser les composants de Laravel pour créer des éléments d'interface utilisateur réutilisables? Comment utiliser les composants de Laravel pour créer des éléments d'interface utilisateur réutilisables? Mar 17, 2025 pm 02:47 PM

    L'article discute de la création et de la personnalisation des éléments d'interface utilisateur réutilisables dans Laravel à l'aide de composants, offrant les meilleures pratiques pour l'organisation et suggérant des packages améliorant.

    Comment créer et utiliser des directives de lame personnalisées à Laravel? Comment créer et utiliser des directives de lame personnalisées à Laravel? Mar 17, 2025 pm 02:50 PM

    L'article discute de la création et de l'utilisation des directives de lame personnalisées à Laravel pour améliorer les modèles. Il couvre la définition des directives, les utilisant dans des modèles et les gérer dans de grands projets, mettant en évidence des avantages tels que l'amélioration de la réutilisabilité du code et R

    Comment puis-je créer et utiliser des règles de validation personnalisées dans Laravel? Comment puis-je créer et utiliser des règles de validation personnalisées dans Laravel? Mar 17, 2025 pm 02:38 PM

    L'article discute de la création et de l'utilisation de règles de validation personnalisées dans Laravel, offrant des étapes pour les définir et les mettre en œuvre. Il met en évidence des avantages tels que la réutilisabilité et la spécificité et fournit des méthodes pour étendre le système de validation de Laravel.

    Comment utiliser la console artisanale de Laravel pour automatiser les tâches courantes? Comment utiliser la console artisanale de Laravel pour automatiser les tâches courantes? Mar 17, 2025 pm 02:39 PM

    La console artisanale de Laravel automatise des tâches comme la génération de code, l'exécution de migrations et la planification. Les commandes clés incluent la marque: contrôleur, migrer et db: graines. Les commandes personnalisées peuvent être créées pour des besoins spécifiques, améliorant l'efficacité du flux de travail.

    Comment puis-je utiliser les fonctionnalités de routage de Laravel pour créer des URL adaptées au référencement? Comment puis-je utiliser les fonctionnalités de routage de Laravel pour créer des URL adaptées au référencement? Mar 17, 2025 pm 02:43 PM

    L'article discute de l'utilisation du routage de Laravel pour créer des URL conviviales, couvrant les meilleures pratiques, des URL canoniques et des outils pour l'optimisation du référencement. Nombre de mots: 159

    Quel est le meilleur, Django ou Laravel? Quel est le meilleur, Django ou Laravel? Mar 28, 2025 am 10:41 AM

    Django et Laravel sont tous deux des frameworks à pile. Django convient aux développeurs Python et à la logique métier complexe, tandis que Laravel convient aux développeurs PHP et à la syntaxe élégante. 1.Django est basé sur Python et suit la philosophie "Battery-Complete", adaptée au développement rapide et à une grande concurrence. 2.Laravel est basé sur PHP, mettant l'accent sur l'expérience du développeur et convient aux projets de petite et moyenne taille.

    Comment utiliser les transactions de base de données dans Laravel pour assurer la cohérence des données? Comment utiliser les transactions de base de données dans Laravel pour assurer la cohérence des données? Mar 17, 2025 pm 02:37 PM

    L'article discute de l'utilisation des transactions de base de données dans Laravel pour maintenir la cohérence des données, des méthodes de détail avec une façade DB et des modèles éloquents, les meilleures pratiques, la gestion des exceptions et les outils de surveillance et de débogage des transactions.

    Comment puis-je implémenter la mise en cache dans Laravel pour améliorer les performances des applications? Comment puis-je implémenter la mise en cache dans Laravel pour améliorer les performances des applications? Mar 17, 2025 pm 02:35 PM

    L'article discute de la mise en œuvre de la mise en cache dans Laravel pour augmenter les performances, couvrant la configuration, en utilisant la façade de cache, les balises de cache et les opérations atomiques. Il décrit également les meilleures pratiques pour la configuration du cache et suggère des types de données à cache

    See all articles