tâche cron avec laravel

Comment configurer l’exécution automatique d’une tâche avec Laravel ?

Temps de lecture: 4 minutes

Hello #davidnation, j’espère que vous vous portez bien. Pour cet article, j’ai jugé bon de partager avec vous une nouvelle expérience que j’ai acquise avec le framework Laravel: la configuration d’une tâche cron avec laravel.

Mais c’est quoi au juste une tâche Cron ?

Qui n’a jamais eu envie de ne pas travailler et de laisser quelqu’un faire le boulot pour soit ? Bonne nouvelle ! C’est possible ! Nous appelons ce héros des temps modernes les tâches Cron !

C’est vrai qu’elles ne vous permettront pas de vous reposer sur vos lauriers en attendant qu’arrive l’heure du repas mais concernant l’informatique, vous aller pouvoir faire de grandes choses :

  • Sauvegarder vos bases de données automatiquement
  • Envoyer des rappels à vos clients pour des factures impayées
  • Générer vos statistiques et vous envoyer le tout en PDF par mail
  • Nettoyer votre forum tous les jours à 1h15 du matin
  • Et tellement d’autres choses…
  • etc.

De manière générale, vous allez être en mesure de programmer des tâches répétées sur votre hébergement avec des scripts (dans notre cas, des scripts PHP). Alors comment utiliser Laravel pour dire à son serveur quoi faire à telle période ?

Exigences:

  1. Éditeur de code Atom / Visual Studio ou Sublime.
  2. Connaitre Laravel (5 et plus) et PHP.

Premièrement, nous allons commencer par créer un nouveau projet, comme ci-dessous à partir de notre ligne de commande.

composer create-project --prefer-dist laravel/laravel blog

 

Une fois l’installation terminée, placez-vous dans le dossier de votre projet racine et créez une nouvelle tâche qui sera exécutée ultérieurement à une heure donnée. J’appelle le mien DeleteInActiveUsers, vous pouvez nommer le vôtre comme vous le souhaitez.

php artisan make:command DeleteInActiveUsers

L’action ci-dessus va créer un fichier contenant les détails de notre action ou commande à exécuter par Cron dans « ..appConsoleCommandes », qui se nomme « DeleteInActiveUsers.php », et ressemble à ça.

use DB; vous permet d’importer des fonctionnalités de la base de données Laravel telles que sélectionner, insérer, supprimer .., mais le fichier n’est pas fourni avec. Il faudra donc l’importer.

protected $ signature = ‘DeleteInActiveUsers: deleteusers’;  inclut le nom et la signature de la commande. C’est ce qui sera appelé lors de l’exécution de la commande pour effectuer la tâche contenue. 

$description; En gros, c’est la description de ce que votre commande va faire.

function handle Dans cette partie, c’est là que sera placé votre code magique pour faire quelque chose, par exemple: DB :: table ('users') -> delete (4); 

Maintenant, remplacez les sections ci-dessus comme je l’ai fait:

 

Allez dans le dossier appConsole, vous verrez le fichier kernel.php qui ressemble à ceci

 

Changez-le comme je l’ai fait ci-dessous et assurez-vous de porter une attention particulière aux modifications apportées à chaque section:

 

Si vous lancez « php artisan list » dans votre terminal de commande, vous devriez pouvoir voir que votre commande a été enregistrée, le nom de la commande apparaîtra avec la signature, ce qui nous prouve que tout va bien.

Une fois que vous avez terminé, assurez-vous que vous êtes connecté à une base de données et que vous avez une table d’utilisateurs avec cet ID particulier. Puis exécutez cette commande sur votre terminal.

Ne vous rappelez pas notre signature maintenant. Après la commande ci-dessus, l’utilisateur ayant l’ID 4 dans cette table sera supprimé après l’heure que vous avez définie pour l’exécution de la commande, dont dans ce cas, chaque minute

Que se passe-t-il si vous souhaitez que le travail périodique soit exécuté automatiquement sans avoir à lancer à l’aide de la commande ?

allez sur votre terminal et lancez cette commande;

 

Cela va ouvrir le fichier crontab du serveur, coller ce code à l’intérieur, le sauvegarder et quitter.

_ _ _ _ * php /path/to/artisan schedule:run >> /dev/null 2>&1

Et voilà, j’espère que ça vous aidera. Pour en savoir un peu plus sur Laravel, n’hésitez pas à consulter cette page.

  • Merci d’avoir lu ! 🙂 Si vous avez aimé cet article,
  • Faites un coucou sur : Instagram | Facebook | Twitter |
  • Avez-vous besoin d’aide pour votre projet web ? Ecrivez moi à l’adresse suivante : david@oschool.ci

 

Deviens toi aussi développeur web !
I agree to have my personal information transfered to MailChimp ( more information )
Commences ta carrière de développeur web, GRATUITEMENT, ici et maintenant !
Je hais les sapms. Votre adresse email ne sera jamais vendu ou partagé avec un tiers

Also published on Medium.

Partages à tous tes amis !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.