Utiliser Cron Schedule dans Laravel pour automatiser les tâches
Cron job est utile pour automatiser notre tâche à l’heure spécifiée à intervalles réguliers. Laravel est livré avec une fonctionnalité de planification des tâches qui rend la planification cron très facile. Auparavant, nous devions ajouter une entrée distincte pour chaque tâche cron. Dans le Laravel, nous avons juste besoin d’ajouter une commande et il exécute automatiquement toutes nos tâches cron. Il n’est pas nécessaire d’ajouter une entrée distincte pour chaque tâche. Dans cet article, nous étudions l’utilisation du calendrier cron dans Laravel qui nous aide à automatiser nos tâches.
Pourquoi devons-nous exécuter Cron ?
Nous pouvons citer plusieurs exemples où nous devons exécuter un cron. Vous exploitez peut-être une boutique en ligne et vous souhaitez envoyer des offres promotionnelles à vos utilisateurs. Ou vous avez un site Web d’adhésion et vous devez envoyer l’e-mail de rappel aux utilisateurs concernant leur période de renouvellement d’abonnement. Ce sont les deux exemples où nous pouvons utiliser le cron. Ce que nous faisons, c’est écrire un programme qui peut effectuer cette tâche et définir un cron pour cela. Votre serveur recherchera l’heure spécifiée pour cron et lorsque cette heure arrivera, il exécutera automatiquement le programme. Nous n’avons pas besoin de regarder l’horloge et d’exécuter le programme manuellement.
Ce processus nous facilite la vie. Nous pouvons nous concentrer sur nos autres choses importantes et investir du temps dans une chose sage.
Horaire de Cron à Laravel
Pour notre article, prenons un exemple concret. Disons que nous avons un tas d’utilisateurs dans notre base de données Laravel. Chaque minuit, nous devons envoyer un e-mail à tous les utilisateurs décrivant notre nouvelle offre promotionnelle. Ce faisant, nos utilisateurs sont informés des nouvelles offres et vos ventes peuvent attirer plus d’attention.
Nous supposons que vous avez stocké toutes les informations de votre utilisateur dans le tableau « utilisateurs ». Nous obtiendrons les e-mails des utilisateurs de cette table et leur enverrons un e-mail. Bien sûr, nous devons écrire un code d’une manière qui devrait s’exécuter tous les minuit.
Ouvrez le app/Console/Kernel.php
fichier dans votre éditeur et ajoutez le modèle utilisateur et la façade Mail au fichier.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
class a une méthode schedule
où nous devons écrire un ou plusieurs horaires. Comme nous devons envoyer un e-mail à nos utilisateurs, nous écrivons le code comme suit.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser;
use Mail;
class Kernel extends ConsoleKernel
{
....
/**
* Define the application's command schedule.
*
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
$arr_users = User::all();
if(count($arr_users) > 0) {
foreach ($arr_users as $user) {
$name = $user->name;
$email = $user->email;
$data = array("name" => $name, "body" => "This is our new promotional offer");
Mail::send('emails.mail', $data, function($message) use ($name, $email) {
$message->to($email, $name)
->subject('New Offer Launched');
$message->from('[email protected]', 'Artisans Web');
});
}
}
})->daily();
// tou can add more schedules here
}
....
Dans le code ci-dessus, nous prenons les utilisateurs de la base de données et leur envoyons un e-mail en utilisant la méthode send de la façade Mail. Ici, nous devons créer un mail.blade.php
fichier sous le resources/views/emails
répertoire.
mail.lame.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Comme notre tâche est d’envoyer un e-mail à minuit, nous avons utilisé la daily()
méthode. Laravel propose différentes options de fréquence de planification que vous obtiendrez sur la page de documentation.
Ajouter une entrée Cron à votre serveur
Enfin, pour définir cette tâche cron sur un serveur, vous devez ajouter l’entrée cron ci-dessous à votre serveur.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Assurez-vous d’avoir correctement défini le chemin de votre projet. Ce Cron appellera le planificateur de commandes Laravel toutes les minutes. Il exécute automatiquement la commande schedule:run et évalue vos tâches planifiées et exécute les tâches dues.
Nous espérons que vous avez appris à utiliser le calendrier cron dans Laravel et à automatiser vos tâches. Nous aimerions entendre vos pensées dans la section des commentaires ci-dessous.
Articles Liés
- Envoi d’e-mails via le serveur SMTP de Gmail dans Laravel
- Comment utiliser les événements et les écouteurs Laravel dans votre application
- Comment utiliser Laravel Passport pour l’authentification API REST