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 :
Maintenant, définissons la logique dans 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
Pensez à utiliser des outils comme 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, il faut 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 ajuster l'heure selon vos besoins.
Mise en file d'attente des e-mails : pour un grand nombre d'utilisateurs, c'est une bonne pratique 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.
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!