Tutoriel des files d'attente Laravel

Tutoriel des files d'attente Laravel
La file d'attente de Laravel est l'une des caractéristiques les plus utiles du framework Laravel. Cette fonctionnalité est utilisée pour attendre les tâches longues et effectuer des tâches à un moment ultérieur pour améliorer les performances et l'efficacité de l'application Laravel. Cette fonctionnalité fournit différents types de files d'attente dans les back-end, tels que Amazon SQS, Redis, Beanstalk, Synchronous Driver ou Database Real. Un pilote de file d'attente nul est utilisé pour éliminer les travaux en file d'attente. Le fichier de configuration de la file d'attente est stocké à l'emplacement config / file d'attente.php. Un exemple courant d'utiliser la file d'attente Laravel est d'envoyer des e-mails. Lorsqu'il doit traiter un grand nombre d'e-mails dans l'application Laraval, il est préférable d'utiliser les files d'attente de Laravel pour accélérer le traitement. Ce tutoriel montre comment utiliser les files d'attente Laravel pour envoyer un grand nombre d'e-mails.

Conditions préalables

Avant de commencer ce tutoriel, terminez d'abord les tâches suivantes:

  1. Installer un projet de Laravel frais
  2. Configurer la connexion de la base de données
  3. Configurez la configuration pour l'envoi des e-mails (vous pouvez vérifier le tutoriel d'envoi d'e-mails pour envoyer un e-mail à l'aide de SMTP)

Créer une table

Vous devez créer le emplois table dans la base de données pour stocker toutes les files d'attente. Exécutez la commande suivante à partir du terminal pour créer le fichier de migration pour le emplois tableau.

$ PHP Artisan Fitre: Table

Vous pouvez ouvrir le fichier de migration à partir de l'emplacement base de données / migrations /. Le fichier contient le contenu suivant.

Utiliser illuminate \ database \ Migrations \ Migration;
Utilisez Illuminate \ Database \ Schema \ Blueprint;
Utiliser illuminate \ support \ FACADES \ Schema;
Class CreateJobstable étend la migration

/ **
* Exécutez les migrations.
*
* @return void
* /
Fonction publique UP ()

Schéma :: Create ('Jobs', fonction (Table Blueprint $)
$ table-> bigInCrements ('id');
$ table-> String ('file d'attente') -> index ();
$ Table-> LongText ('Payload');
$ table-> unsignedtinyInteger («tentatives»);
$ table-> unsignedInteger ('réservé_at') -> nullable ();
$ table-> unsignedInteger ('disponible_at');
$ table-> unsignedInteger ('Created_at');
);

/ **
* Inverser les migrations.
*
* @return void
* /
Fonction publique Down ()

Schema :: DropIfexists («Jobs»);

Exécutez la commande suivante à partir du terminal pour créer le emploi tableau.

$ php artisan migrer

Créer une classe de courrier

Vous devez créer une classe par mail pour envoyer des e-mails à partir de l'application Laravel. Exécutez la commande suivante pour créer la classe de messagerie nommée Senimemail dans l'emplacement application / courrier.

$ PHP Artisan Make: Mail SendEmail

Le contenu de cette classe est illustré ci-dessous. Le nom de fichier de vue qui est utilisé dans le construire() La méthode sera créée dans la prochaine partie de ce tutoriel.

Namespace App \ Mail;
Utiliser illuminate \ bus \ que la queue;
Utiliser illuminate \ contracts \ file d'attente \ Soupreue;
Utiliser illuminate \ Mail \ Mailable;
Utiliser illuminate \ queue \ serializesModels;
Class Sendemail étend par la poste

Utilisez la queregue, SerializalizesModels;
/ **
* Créez une nouvelle instance de message.
*
* @return void
* /
fonction publique __construct ()

//

/ **
* Construisez le message.
*
* @return $ ceci
* /
Build de fonction publique ()

/ * Définissez le nom de vue qui sera utilisé pour le modèle de messagerie * /
retourner $ this-> voir ('e-mail');

Créer une vue

Créer le fichier d'affichage nommé e-mail.lame.php avec le contenu suivant qui sera envoyé comme le corps de messagerie.

Bienvenue à Linux Indice


Apprenez facilement Laravel

Créer une classe d'emploi

Exécutez la commande suivante pour créer une classe d'emploi. Le nom de fichier de classe d'emploi nommé SendingingEmail.php sera créé à l'emplacement application / emplois.

$ php artisan Make: Job SendingEmail

Le contenu du SendingingEmail.php est indiqué ci-dessous. Vous devez définir une adresse e-mail valide à l'intérieur du pour() Méthode de la gérer() fonction pour tester si le code fonctionne correctement. Définissez l'adresse e-mail valide à la place de «Adresse e-mail du récepteur» à l'intérieur de pour() Méthode pour vérifier si la file d'attente fonctionne correctement.

Namespace App \ Jobs;
Utiliser illuminate \ bus \ que la queue;
Utiliser illuminate \ contracts \ file d'attente \ Soupreue;
Utiliser illuminate \ Foundation \ Bus \ Dispatchable;
Utilisez illuminate \ queue \ interactSwithQueue;
Utiliser illuminate \ queue \ serializesModels;
/ * Ajout des packages nécessaires * /
utiliser le courrier;
Utilisez App \ Mail \ SendEmail;
Class SendingEmail implémente la mouche

Utiliser la répartition disposable, interactivewithqueue, dialable, sérialiser les modèles;
/ **
* Créez une nouvelle instance de travail.
*
* @return void
* /
fonction publique __construct ()

//

/ **
* Exécuter le travail.
*
* @return void
* /
Handle de la fonction publique ()

/ * Créez l'objet de la classe par mail et envoyez un e-mail * /
$ email = new SendEmail ();
/ * Définissez une adresse e-mail valide * /
Mail :: to ('Adresse e-mail du récepteur') -> Envoyer ($ e-mail);

Créer un contrôleur

Exécutez la commande suivante pour créer un contrôleur pour gérer la file d'attente. Quand le handlequeue () La fonction du contrôleur est exécutée, le travail de file d'attente sera poussé et l'e-mail enverra.

$ PHP Artisan Make: Controller SendEmailController

SendEmailController.php

Namespace App \ Http \ Controllers;
Utiliser illuminate \ http \ request;
/ * Ajouter les packages nécessaires * /
Utilisez App \ Jobs \ SendingingEmail;
Utiliser du carbone \ carbone;
Class SendEmailController étend le contrôleur

/ **
* Utilisation des files d'attente de Laravel
* /
Fonction publique Handlequeue ()

/ * Poussez le nouveau travail dans la file d'attente de l'emploi * /
Dispatch (new SendingingEmail ());
/ * Imprimer le message après avoir envoyé un e-mail * /
Echo «e-mail a été envoyé»;

Ajouter l'itinéraire

Ouvrir le la toile.php fichier à partir du itinéraires dossier et ajoutez la route suivante pour exécuter le travail de file d'attente à l'aide du contrôleur.

Route :: get ('email', 'SendEmailController @ handlequeue');

Exécutez l'URL suivante dans le navigateur pour vérifier si le code fonctionne. Ouvrez l'adresse e-mail du récepteur pour vérifier si un nouvel e-mail a été reçu.

http: // localhost: 8000 / e-mail

Ajouter un retard

Ouvrir le SendingingEmail.php fichier à nouveau et modifier le contenu du handlequeue () fonction pour ajouter le délai de cinq secondes aux travaux de file d'attente.

Namespace App \ Http \ Controllers;
Utiliser illuminate \ http \ request;
/ * Ajouter les packages nécessaires * /
Utilisez App \ Jobs \ SendingingEmail;
Utiliser du carbone \ carbone;
Class SendEmailController étend le contrôleur

/ **
* Utilisation des files d'attente de Laravel
* /
Fonction publique Handlequeue ()

/ * Créez un nouvel objet de file d'attente avec un retard de 5 secondes * /
$ emailjob = (new SendingEmail ()) -> Delay (Carbon :: Now () -> AddSeconds (5));
/ * Poussez le nouveau travail dans la file d'attente de l'emploi * /
Dispatch ($ Courriel);
/ * Imprimer le message après avoir envoyé un e-mail * /
Echo «e-mail envoyé après cinq secondes»;

Encore une fois, exécutez l'URL suivante dans le navigateur pour vérifier si le code fonctionne. Ici, l'e-mail sera envoyé après cinq secondes, en utilisant la méthode de retard () de cinq secondes.

http: // localhost: 8000 / e-mail

Cochez la boîte de réception de l'adresse e-mail du récepteur pour savoir si un nouvel e-mail a été reçu après 5 secondes. Un e-mail avec le contenu suivant sera reçu si le travail de file d'attente fonctionne correctement.

Conclusion

Ce tutoriel montre une utilisation très simple de la file d'attente de Laravel. Vous pouvez utiliser les files d'attente de Laravel à diverses fins, en fonction de vos exigences de demande. J'espère que ce tutoriel a aidé les lecteurs à mieux comprendre les concepts de base des files d'attente de Laravel.