Certaines tâches sont tenues de fonctionner régulièrement dans n'importe quelle application, et il serait plus efficace si les tâches pouvaient être effectuées automatiquement. Le framework Laravel facilite ces types de tâches en utilisant Laravel Scheduler. L'envoi d'e-mails en vrac liés à l'offre, l'optimisation des données, la génération de rapports, le maintien de la sauvegarde des applications et la suppression des utilisateurs inactifs sont quelques exemples courants des tâches répétitives qui peuvent être effectuées avec le planificateur Laravel. Laravel peut exécuter périodiquement des tâches spécifiques en utilisant un gestionnaire de tâches intégré nommé
Maïs emploi. Le fichier de configuration nommé
Corntab est utilisé par
Maïs Pour gérer les tâches de planification. Ce tutoriel vous montre comment gérer les tâches répétitives en créant
Maïs emplois et effectuer la planification des tâches.
Conditions préalables
Avant de commencer ce tutoriel, terminez d'abord les tâches suivantes:
- Créer un nouveau projet Laravel
- Configurer la connexion de la base de données
- Exécutez la commande migrate Créez une table utilisateur
- Configurez la configuration pour envoyer des e-mails (SMTP est utilisé ici pour envoyer des e-mails.)
Implémenter l'authentification par défaut
Tout d'abord, implémentez le système d'authentification utilisateur par défaut de Laravel pour terminer la tâche de planification affichée dans ce tutoriel. Exécutez les commandes suivantes à partir du terminal pour implémenter l'authentification Laravel par défaut à l'aide de Vue.
$ compositeur a besoin de laravel / ui
$ php artisan ui vue -auth
Exécutez la commande suivante pour compiler l'échafaudage frais pour obtenir le contenu mis à jour.
$ npm install && npm run dev
Exécutez la commande suivante pour effacer le cache de route.
$ PHP Artisan Route: Clear
Exécutez la commande suivante pour démarrer le serveur de développement Laravel et vérifier si le système d'authentification utilisateur par défaut fonctionne.
$ php artisan Serve
Ouvrez n'importe quel navigateur et exécutez l'URL suivante dans le navigateur. Si la connexion et enregistrer Le lien apparaît et fonctionne correctement, puis l'implémentation de l'authentification par défaut a été terminée correctement.
http: // localhost: 8000
Créer une classe de classe et d'artisan par mail et artisan
De nombreux nouveaux utilisateurs créeront des comptes quotidiennement et effectueront de nombreuses tâches liées aux utilisateurs enregistrés lorsque le projet sera en ligne. Parfois, l'application doit savoir combien d'utilisateurs ont créé des comptes chaque jour. Si ces informations sont requises régulièrement, il est préférable d'exécuter une requête particulière après un intervalle régulier. Une commande Laravel est utilisée ici pour obtenir les informations des utilisateurs actuellement enregistrés et une classe par mail est utilisée pour envoyer ces informations par e-mail à l'administrateur ou à une personne spécifiée.
Exécutez la commande suivante pour créer la classe par mail pour envoyer l'e-mail. Il créera un fichier nommé SendUsersList.php dans l'emplacement application / courrier.
$ PHP Artisan Make: Mail SenusersList
Ouvrez le fichier et modifiez le contenu, comme dans le code suivant.
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 SendersersList étend par la poste
Utilisez la queregue, SerializalizesModels;
/ * Déclarer une variable de tableau * /
public $ userList = array ();
/ **
* Créez une nouvelle instance de message.
*
* @return void
* /
Fonction publique __construct ($ userList)
/ * Initialisez la variable de tableau par la variable transmise par le
Création d'objets de la classe. * /
$ this-> userList = $ userList;
/ **
* Construisez le message.
*
* @return $ ceci
* /
Build de fonction publique ()
/ * Diaaction le fichier de vue avec les valeurs de la variable du tableau * /
return $ this-> View ('registredlist') -> avec ('userList', $ this-> userList);
Exécutez la commande suivante pour créer la commande Laravel personnalisée nommée Liste de listes, qui exécutera la requête pour obtenir la liste des informations des utilisateurs enregistrés chaque jour. La commande créera un fichier nommé Liste de listes.php dans l'emplacement application / commandes.
$ PHP Artisan Make: Command RegisterUsersList - Command = enregistré: utilisateurs
Ouvrez le fichier et modifiez le contenu avec le code suivant pour envoyer la liste des utilisateurs actuellement enregistrés du système actuel à une adresse e-mail particulière.
namespace app \ console \ commandes;
Utiliser illuminate \ console \ Command;
/ * Importez les packages nécessaires * /
utiliser le courrier;
Utilisez App \ Mail \ SendUsersList;
Utilisez DB;
Utiliser du carbone \ carbone;
Utilisez App \ Console \ Commands \ DateTime;
Class RegisterUsersList étend la commande
/ **
* Le nom et la signature de la commande de la console.
*
* String @var
* /
/ * Ajouter une valeur de signature * /
protégé $ signature = 'enregistré: utilisateurs';
/ **
* La description de la commande de la console.
*
* String @var
* /
protégé $ Description = 'Liste des utilisateurs enregistrés';
/ **
* Créez une nouvelle instance de commande.
*
* @return void
* /
fonction publique __construct ()
parent :: __ construction ();
/ **
* Exécuter la commande console.
*
* @return int
* /
Handle de la fonction publique ()
/ * Lire la date du système actuelle * /
$ Today = Carbon :: Now () -> TodateString ();
/ * Obtenez la liste des informations des utilisateurs qui sont enregistrées
dans la date du système actuelle * /
$ current_registerd_users =
DB :: Table ('Users') -> WHEREDATE ('CREATED_AT', $ Today) -> get () -> toArray ();
/ * Créez l'objet de la classe par mail avec la variable du tableau
qui contient la liste des utilisateurs actuellement enregistrés * /
$ email = new SendeSersList ($ current_registerred_users);
/ * Envoyer un e-mail à l'aide de la classe de courrier * /
Mail :: to ('Adresse e-mail du récepteur') -> Envoyer ($ e-mail);
Configurez le calendrier pour exécuter la commande
Ouvrir le Noyau.php fichier à partir de l'emplacement application / console et modifier le contenu avec le code suivant. Vous pouvez définir différents types d'options de fréquence des horaires. Vous pouvez obtenir la liste à partir de ce lien. Ici, le calendrier horaire est utilisé.
Namespace App \ Console;
Utiliser illuminate \ console \ scheduling \ calendrier;
Utiliser illuminate \ Foundation \ Console \ Kernel comme consolekernel;
Le noyau de classe étend ConsoleKernel
/ **
* Les commandes artisanales fournies par votre application.
*
* Array @var
* /
/ * Intialize la variable de commandes $ * /
Protégé $ Commandes = [
'App \ Console \ Commandes \ RegisterUsersList',
]]
/ **
* Définissez le calendrier de commande de la demande.
*
* @param \ illuminate \ console \ scheduling \ calendrier $ calendrier
* @return void
* /
Horaire des fonctions protégées (calendrier calendrier)
/ * Définissez l'horaire horaire * /
$ calendrier-> Commande ('enregistré: utilisateurs') -> hourly ();
/ **
* Enregistrez les commandes de l'application.
*
* @return void
* /
Commandes de fonction protégées ()
$ this-> charge (__ dir__.«/ Commandes»);
exiger la base_path ('itinéraires / console.php ');
Créer une vue
Créer le liste enregistrée.lame.php Afficher le fichier avec le code suivant.
@if (count ($ userList)> 0)
La liste des utilisateurs enregistrés aujourd'hui est donnée ci-dessous:
@Foreach ($ UserList en tant qu'utilisateur)
$ user-> name
@endforeach
@autre
Aucun utilisateur n'est encore enregistré aujourd'hui.
@fin si
Exécutez la commande:
Exécutez les commandes suivantes pour effacer le cache.
$ cache d'artisan PHP: Clear
$ PHP CONFIG ARTISAN: CACHE
Exécutez la commande artisan suivante à partir du terminal pour exécuter la commande personnalisée créée précédemment et vérifier la sortie.
$ php artisan enregistré: utilisateurs
Vérifiez l'adresse e-mail du récepteur pour découvrir la sortie. La sortie suivante apparaîtra si aucun utilisateur n'est créé.
Créez un nouveau compte utilisateur et vérifiez à nouveau l'e-mail.
Conclusion
Le planificateur Laravel rend les tâches répétitives plus faciles à effectuer pour l'application. Après avoir lu ce tutoriel, les lecteurs devraient désormais avoir une compréhension claire des concepts de création de commandes personnalisées et d'implémentation de tâches automatisées à l'aide de Laravel Scheduler.