


Comment utiliser les files d'attente (Queues) pour traiter les tâches en arrière-plan dans le framework Laravel
Comment utiliser les files d'attente (Queues) dans le framework Laravel pour traiter les tâches en arrière-plan
Introduction :
À mesure que les applications Web deviennent de plus en plus complexes, nous devons souvent traiter certaines tâches fastidieuses en arrière-plan, telles que l'envoi d'e-mails, d'images traitement, génération de rapports, etc. attendez. Si ces tâches sont effectuées directement pendant le processus de demande, l'expérience utilisateur sera dégradée, voire la demande expirera. Heureusement, le framework Laravel fournit une fonction de file d'attente (Queues) qui peut traiter ces tâches chronophages de manière asynchrone, améliorant ainsi les performances des applications et la vitesse de réponse.
Cet article expliquera comment utiliser les files d'attente (Queues) dans le framework Laravel pour traiter les tâches en arrière-plan, y compris la configuration de la file d'attente, la définition et l'exécution des tâches, etc. Des exemples de code seront également fournis pour démontrer comment ces concepts peuvent être appliqués dans la pratique.
- Configuration de la file d'attente
Tout d'abord, vous devez configurer le pilote de file d'attente dans le fichier de configuration de Laravel. Dans le fichier config/queue.php, l'extrait de code suivant peut être trouvé :
'default' => env('QUEUE_CONNECTION', 'sync'),
Par défaut, le pilote de file d'attente est sync
, qui exécute les tâches immédiatement sans utiliser de file d'attente. Nous devons le modifier en fonction du pilote de file d'attente que nous souhaitons utiliser, tel que database
, redis
, etc. En prenant le pilote database
comme exemple, vous devez modifier le code ci-dessus pour : sync
,它会立即执行任务而不使用队列。我们需要将其修改为我们想要使用的队列驱动程序,如database
、redis
等。以database
驱动程序为例,需要将上述代码修改为:
'default' => env('QUEUE_CONNECTION', 'database'),
同时,还需要配置数据库连接信息,以便Laravel可以将队列任务存储在数据库中。继续修改config/database.php文件,找到以下代码片段:
'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), // ... ], ],
在这个代码片段中,需要添加一个新的数据库连接配置项,如下所示:
'connections' => [ // ... 'queue' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), // ... ], ],
将上述代码片段中的mysql
驱动程序修改为你实际使用的数据库驱动程序,并根据实际情况配置数据库连接信息。
- 定义队列任务
在Laravel框架中,队列任务是通过实现IlluminateContractsQueueShouldQueue
接口来定义的。首先,需要创建一个新的队列任务类,例如SendEmailJob
:
namespace AppJobs; use IlluminateContractsQueueShouldQueue; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; class SendEmailJob implements ShouldQueue { use InteractsWithQueue, SerializesModels; public function __construct() { // } public function handle() { // 处理发送邮件的逻辑 } }
在上述代码中,ShouldQueue
接口表明这个类是一个队列任务。InteractsWithQueue
和SerializesModels
两个特征可以帮助我们与队列系统进行交互和序列化模型。
在handle
方法中,我们可以编写具体的任务逻辑。
- 分发队列任务
完成队列任务类的定义后,就可以在应用中分发(dispatch)这些任务了。下面的代码示例演示了如何将SendEmailJob
任务分发到队列中:
use AppJobsSendEmailJob; class SomeController extends Controller { public function sendEmail() { dispatch(new SendEmailJob()); // 返回响应或执行其他操作 } }
在上述代码中,我们通过dispatch
函数将SendEmailJob
任务分发到队列中,而不是直接执行。这样可以确保任务在后台异步执行,而不会影响当前请求的响应速度。
- 执行队列任务
最后,我们需要设置任务队列的执行方式。Laravel提供了一个命令行工具php artisan queue:work
En même temps, vous devez également configurer les informations de connexion à la base de données afin que Laravel puisse stocker les tâches de file d'attente dans le base de données. Continuez à modifier le fichier config/database.php et recherchez l'extrait de code suivant : rrreeephp artisan queue:work
Copier après la connexionDans cet extrait de code, vous devez ajouter un nouvel élément de configuration de connexion à la base de données, comme indiqué ci-dessous :
rrreeeRemplacez
mysql dans le extrait de code ci-dessus
Modifiez le pilote avec le pilote de base de données que vous utilisez réellement et configurez les informations de connexion à la base de données en fonction de la situation réelle.- Définir les tâches de file d'attente
Dans le framework Laravel, les tâches de file d'attente sont définies en implémentant l'interface
🎜rrreee🎜Dans le code ci-dessus, l'interfaceIlluminateContractsQueueShouldQueue
. Tout d'abord, vous devez créer une nouvelle classe de tâches de file d'attente, telle queSendEmailJob
:ShouldQueue
indique que cette classe est une tâche de file d'attente . Les fonctionnalitésInteractsWithQueue
etSerializesModels
peuvent nous aider à interagir avec le système de file d'attente et à sérialiser le modèle. 🎜🎜Dans la méthodehandle
, nous pouvons écrire une logique de tâche spécifique. 🎜- 🎜Distribuer les tâches de file d'attente🎜Après avoir terminé la définition de la classe de tâches de file d'attente, vous pouvez distribuer (répartir) ces tâches dans l'application. L'exemple de code suivant montre comment distribuer la tâche
SendEmailJob
à la file d'attente : 🎜🎜rrreee🎜Dans le code ci-dessus, nous transmettons la fonctionSendEmailJob
via ledispatch<.> fonction >Les tâches sont réparties dans une file d'attente plutôt que exécutées directement. Cela garantit que la tâche est exécutée de manière asynchrone en arrière-plan sans affecter la vitesse de réponse de la requête en cours. 🎜<ol start="4">🎜Exécuter les tâches de la file d'attente🎜Enfin, nous devons définir la méthode d'exécution de la file d'attente des tâches. Laravel fournit un outil de ligne de commande <code>php artisan queue:work
pour effectuer des tâches de file d'attente. Exécutez cette commande dans le terminal pour démarrer le traitement des tâches dans la file d'attente. 🎜🎜rrreee🎜De plus, vous pouvez également utiliser des outils tels que Supervisor pour surveiller le processus de file d'attente afin de garantir que les tâches peuvent être exécutées en continu. 🎜🎜Résumé : 🎜L'utilisation de files d'attente (Queues) pour traiter les tâches en arrière-plan dans le framework Laravel est un moyen efficace d'améliorer les performances des applications et la vitesse de réponse. Le traitement asynchrone des tâches en arrière-plan peut être réalisé en configurant des files d'attente, en définissant des tâches de file d'attente, en distribuant des tâches et en exécutant des tâches. 🎜🎜J'espère que cet article pourra aider les lecteurs à comprendre comment utiliser les files d'attente dans le framework Laravel pour gérer les tâches en arrière-plan, et aider les lecteurs à mieux appliquer ces concepts à travers des exemples de code. 🎜
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Laravel - Personnalisations de pagination - Laravel inclut une fonctionnalité de pagination qui aide un utilisateur ou un développeur à inclure une fonctionnalité de pagination. Le paginateur Laravel est intégré au générateur de requêtes et à Eloquent ORM. La méthode paginate automatique

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Laravel - Dump Server - Le serveur de dump Laravel est livré avec la version de Laravel 5.7. Les versions précédentes n'incluent aucun serveur de dump. Le serveur de vidage sera une dépendance de développement dans le fichier laravel/laravel composer.

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...
