Avec le développement continu de l'industrie Internet, nos sites Web deviennent de plus en plus complexes et le nombre de visites augmente également. Dans le cas d'une concurrence élevée, le traitement d'un grand nombre de tâches chronophages est une tâche très difficile, ce qui entraînera le blocage et le blocage de notre entreprise. Afin de résoudre ce problème, Laravel fournit une fonction de file d'attente qui peut être utilisée pour gérer certaines tâches asynchrones et reportables afin que les utilisateurs ne se sentent pas bloqués. Ensuite, apprenons à utiliser la file d'attente Laravel.
1. Installer la file d'attente
1. Installer le package de file d'attente
Dans Laravel, la file d'attente est placée dans le package de travail de file d'attente Laravel Nous pouvons utiliser Composer pour installer le package :
composer require illuminate/queue
2. . Ajouter des fournisseurs de files d'attente
Laravel prend en charge plusieurs backends de files d'attente, notamment les bases de données, Redis, Beanstalkd, etc. Nous devons configurer le fournisseur de file d'attente dans config/queue.php. Par exemple, nous pouvons utiliser le fournisseur de file d'attente Redis :
'connections' => [
'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, 'block_for' => null, ],
],
2. Créer des tâches
La file d'attente est conçue pour gérer des tâches de longue durée, cela peut être n'importe quelle tâche ou commande. Nous pouvons utiliser la ligne de commande pour générer une nouvelle tâche de file d'attente :
php artisan make:job SendEmail
La classe de tâches de file d'attente générée est placée dans le répertoire app/Jobs. La classe de tâches SendEmail générée manuellement est une classe de base. Comme ceci :
namespace AppJobs;
utilisez IlluminateBusQueueable;
utilisez IlluminateContractsQueueShouldQueue;
utilisez IlluminateFoundationBusDispatchable;
utilisez IlluminateQueueInteractsWithQueue;
utilisez IlluminateQueue SerializesModels;
class SendEmail implémente ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() { // }
}
us La logique d'implémentation spécifique de la tâche peut être écrite dans la méthode handle().
3. Pousser les tâches vers la file d'attente
Dans Laravel, nous pouvons utiliser la méthode statique $dispatch() pour ajouter des tâches à la file d'attente. Nous pouvons utiliser cette méthode dans un contrôleur, une route ou n'importe où ailleurs comme suit :
use AppJobsSendEmail ;
SendEmail::dispatch();
Nous pouvons également spécifier en utilisant les méthodes delay() et onQueue() de la file d'attente ; nom.
Par exemple, placez la tâche dans la file d'attente nommée « emails » et traitez-la après 10 secondes :
SendEmail::dispatch()->onQueue('emails')->delay(now()-> ; addSeconds(10));
4. Exécuter la file d'attente
Nous avons poussé la tâche vers la file d'attente, nous devons maintenant exécuter la file d'attente et traiter la tâche. Dans Laravel, nous pouvons utiliser la commande Artisan pour démarrer le processeur de file d'attente :
php artisan queue:work
Par défaut, le processeur de file d'attente utilisera le fournisseur de file d'attente nommé "default". Nous pouvons définir la file d'attente pour le traitement du processeur en utilisant l'option "--queue". Par exemple, pour travailler avec la file d'attente de courrier :
php artisan queue:work --queue=emails
Si vous souhaitez utiliser tous les processeurs disponibles pour traiter la file d'attente à tour de rôle, vous pouvez utiliser l'option "--daemon". Cela garantit que même si un processeur tombe en panne, il ne cessera pas de fonctionner.
php artisan queue:work --daemon
Il existe de nombreuses autres options pour les processeurs de file d'attente. Vous pouvez utiliser la commande php artisan queue:work --help pour afficher toutes les options et informations associées.
5. Résumé
Voici les étapes d'utilisation de la file d'attente laravel. En utilisant la file d'attente laravel, nous pouvons facilement gérer un grand nombre de tâches fastidieuses, améliorant ainsi l'efficacité et la vitesse de réponse de l'application. Si vous souhaitez approfondir plus de détails et d'options sur les files d'attente, consultez la documentation officielle de Laravel.
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!