Conditions préalables
Avant de commencer ce didacticiel, commencez par effectuer les tâches suivantes :
- Installer un nouveau projet Laravel
- Configurer la connexion à la base de données
- Configurer la configuration pour l'envoi des e-mails (Vous pouvez consulter le didacticiel d'envoi d'e-mails pour envoyer des e-mails via SMTP)
Créer un tableau
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 depuis le terminal pour créer le fichier de migration pour le emplois tableau.
$ file d'attente d'artisans php:tableVous pouvez ouvrir le fichier de migration à partir de l'emplacement base de données/migrations/. Le fichier contient le contenu suivant.
utilisez Illuminate\Database\Migrations\Migration ;utilisez Illuminate\Database\Schema\Blueprint ;
utilisez Illuminate\Support\Facades\Schema ;
la classe CreateJobsTable étend la migration
/**
* Exécuter les migrations.
*
* @retour nul
*/
fonction publique up()
Schema::create('jobs', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('charge utile');
$table->unsignedTinyInteger('tentatives');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
);
/**
* Inverser les migrations.
*
* @retour nul
*/
fonction publique down()
Schema::dropIfExists('jobs');
Exécutez la commande suivante depuis le terminal pour créer le travail tableau.
$ php artisan migrerCréer une classe de courrier
Vous devez créer une classe mailable pour envoyer des emails depuis l'application Laravel. Exécutez la commande suivante pour créer la classe de courrier nommée EnvoyerEmail dans l'emplacement application/courrier.
$ php artisan make:mail SendEmailLe contenu de cette classe est indiqué ci-dessous. Le nom de fichier de vue utilisé dans le construire() méthode sera créée dans la prochaine partie de ce tutoriel.
espace de noms App\Mail ;utilisez Illuminate\Bus\Queueable ;
utilisez Illuminate\Contracts\Queue\ShouldQueue ;
utilisez Illuminate\Mail\Mailable ;
utilisez Illuminate\Queue\SerializesModels ;
la classe SendEmail étend Mailable
utiliser Queueable, SerializesModels;
/**
* Créer une nouvelle instance de message.
*
* @retour nul
*/
fonction publique __construct()
//
/**
* Construire le message.
*
* @return $this
*/
fonction publique build()
/* Définir le nom de la vue qui sera utilisé pour le modèle d'e-mail */
return $this->view('email');
Créer une vue
Créez le fichier de vue nommé e-mail.lame.php avec le contenu suivant qui sera envoyé comme corps de l'e-mail.
Bienvenue sur Linux Hint
Apprendre Laravel facilement
Créer une classe d'emploi
Exécutez la commande suivante pour créer une classe de travail. Le nom de fichier de la classe d'emplois nommé EnvoiEmail.php sera créé à l'emplacement application/Emplois.
$ php artisan make:job EnvoiEmailLe contenu de la EnvoiEmail.php est montré ci-dessous. Vous devez définir une adresse e-mail valide dans le à() méthode de la manipuler() fonction pour tester si le code fonctionne correctement. Définissez l'adresse e-mail valide à la place de 'Adresse e-mail du destinataire' à l'intérieur de à() méthode pour vérifier si la file d'attente fonctionne correctement.
espace de noms App\Jobs ;utilisez Illuminate\Bus\Queueable ;
utilisez Illuminate\Contracts\Queue\ShouldQueue ;
utilisez Illuminate\Foundation\Bus\Dispatchable ;
utilisez Illuminate\Queue\InteractsWithQueue ;
utilisez Illuminate\Queue\SerializesModels ;
/* Ajout des packages nécessaires */
utiliser la messagerie ;
utilisez App\Mail\SendEmail ;
la classe SendingEmail implémente ShouldQueue
utilisez Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Créer une nouvelle instance de travail.
*
* @retour nul
*/
fonction publique __construct()
//
/**
* Exécuter le travail.
*
* @retour nul
*/
poignée de fonction publique()
/* Créer l'objet de la classe mailable et envoyer un email */
$email = new SendEmail();
/* Définir une adresse e-mail valide */
Mail::to('Adresse e-mail du destinataire ')->send($email);
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() 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 SendEmailControllerSendEmailController.php
espace de noms App\Http\Controllers ;utilisez Illuminate\Http\Request ;
/* Ajouter les packages nécessaires */
utilisez App\Jobs\SendingEmail ;
utiliser Carbone\Carbone ;
la classe SendEmailController étend le contrôleur
/**
* Utilisation des files d'attente Laravel
*/
fonction publique handleQueue()
/* Pousser le nouveau travail dans la file d'attente des travaux */
dispatch(new SendingEmail());
/* Imprimer le message après l'envoi de l'e-mail */
echo 'L'e-mail a été envoyé';
Ajouter un itinéraire
Ouvrez le la toile.php fichier de la 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', '[email protected]');Exécutez l'URL suivante dans le navigateur pour vérifier si le code fonctionne. Ouvrez l'adresse e-mail du destinataire pour vérifier si un nouvel e-mail a été reçu.
http://localhost:8000/emailqueue
Ajouter un délai
Ouvrez le EnvoiEmail.php à nouveau et modifier le contenu du handleQueue() fonction pour ajouter le délai de cinq secondes aux tâches de la file d'attente.
espace de noms App\Http\Controllers ;utilisez Illuminate\Http\Request ;
/* Ajouter les packages nécessaires */
utilisez App\Jobs\SendingEmail ;
utiliser Carbone\Carbone ;
la classe SendEmailController étend le contrôleur
/**
* Utilisation des files d'attente Laravel
*/
fonction publique handleQueue()
/* Créer un nouvel objet file d'attente avec un délai de 5 secondes */
$emailJob = (new SendingEmail())->delay(Carbon::now()->addSeconds(5));
/* Pousser le nouveau travail dans la file d'attente des travaux */
dispatch($emailJob);
/* Imprimer le message après l'envoi de l'e-mail */
echo 'Email 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 delay() de cinq secondes.
http://localhost:8000/emailqueue
Vérifiez la boîte de réception de l'adresse e-mail du destinataire 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 Laravel. Vous pouvez utiliser les files d'attente Laravel à diverses fins, en fonction des exigences de votre application. J'espère que ce tutoriel a aidé les lecteurs à mieux comprendre les concepts de base des files d'attente Laravel.