Bonjour à tous! Aujourd'hui, je vais vous expliquer le processus de création d'une tâche planifiée dans Laravel. Nous prendrons l'exemple de l'envoi d'un email marketing quotidien aux utilisateurs.
Tout d'abord, créons une nouvelle classe Mailable à l'aide de la commande Artisan suivante :
php artisan make:mail DailyMarketingEmail --view
Cette commande génère une nouvelle classe Mailable dans le répertoire App/Mail, ainsi qu'un fichier de vue correspondant, daily-marketing-email.blade.php, dans le répertoire resources/views/mail/. Vous pouvez personnaliser le contenu de l'e-mail dans ce fichier d'affichage.
Ensuite, nous allons créer une commande Artisan qui gérera l'envoi de notre DailyMarketingEmail. Exécutez la commande suivante :
php artisan make:command SendDailyMarketingEmail
Cette commande générera une nouvelle classe de commandes dans le répertoire app/Console/Commands.
Après avoir généré votre commande, vous verrez deux propriétés clés dans la classe générée :
protected $signature : Ceci définit le nom et la signature de votre commande Artisan.
protected $description : ceci fournit une description de votre commande.
La méthode handle de cette classe est l’endroit où vous définirez la logique de votre commande.
Une fois que tout est configuré, vous pouvez lister toutes vos commandes Artisan en exécutant :
artisan php
Vous devriez voir votre commande dans la liste :
Définissons maintenant la logique au sein de la méthode handle pour envoyer les e-mails marketing :
each(function ($user) { Mail::to($user->email)->send(new DailyMarketingEmail); }); } }
Dans la méthode handle, nous récupérons tous les utilisateurs de la base de données et envoyons à chacun le DailyMarketingEmail.
Vous pouvez tester manuellement votre commande en exécutant :
php artisan app:send-daily-marketing-emails
Envisagez d'utiliser des outils tels que Mailtrap ou MailHog pour récupérer et afficher les e-mails envoyés pendant les tests.
Enfin, pour automatiser l'envoi de cet email quotidiennement, nous devons planifier la commande dans la méthode planning du fichier Kernel.php situé dans le répertoire app/Console/ :
command('app:send-daily-marketing-emails')->dailyAt('08:30'); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
Ici, nous utilisons la méthode dailyAt('08:30') pour planifier l'exécution de la commande tous les jours à 08h30. Vous pouvez régler l'heure selon vos besoins.
Mise en file d'attente des e-mails : pour un grand nombre d'utilisateurs, il est recommandé de mettre les e-mails en file d'attente plutôt que de les envoyer tous en même temps. Cela peut être fait en implémentant l'interface ShouldQueue dans la classe Mailable.
Considérations relatives aux performances : pour les grandes bases d'utilisateurs, envisagez d'optimiser les requêtes de base de données et le processus d'envoi d'e-mails pour garantir des performances efficaces.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3