Planificateur de tâches PHP : bibliothèque cron‑expression pour un planning flexible

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Planificateur de tâches PHP : bibliothèque cron‑expression



Lors du développement d'applications web en PHP, il est souvent nécessaire d'exécuter certaines actions selon un planning : envoyer des notifications, vider le cache, générer des rapports ou synchroniser des données. Le cron intégré de Linux est un outil puissant, mais sa configuration nécessite un accès au serveur et n'est pas toujours pratique pour une planification dynamique au sein du code PHP. La bibliothèque cron‑expression résout ce problème : elle permet d'analyser, de vérifier et de calculer les heures d'exécution des tâches à partir d'expressions CRON directement en PHP.



Dans cet article, nous verrons comment installer et utiliser la bibliothèque cron‑expression, nous créerons un planificateur de tâches simple et examinerons des exemples concrets.



Qu'est-ce que cron‑expression ?



cron‑expression est une bibliothèque PHP pour travailler avec les expressions CRON. Une expression CRON est une chaîne composée de cinq champs séparés par des espaces :



* * * * *| | | | || | | | +---- jour de la semaine (0–7) (dimanche = 0 ou 7)| | | +------ mois (1–12)| | +-------- jour du mois (1–31)| +---------- heure (0–23)+------------ minute (0–59)


Par exemple, l'expression 30 4 * * 1-5 signifie : « tous les jours de la semaine à 4h30 du matin ». La bibliothèque permet de :



  • Vérifier si l'heure actuelle correspond à l'expression donnée.
  • Obtenir la prochaine date d'exécution de la tâche.
  • Calculer la date d'exécution précédente.
  • Travailler avec des plages, des pas et des listes de valeurs.


Installation



L'installation se fait via Composer. Ouvrez un terminal à la racine de votre projet et exécutez :



composer require mtdowling/cron-expression


Après l'installation, incluez l'autoloader de Composer dans votre script PHP :



require 'vendor/autoload.php';


Fonctionnalités principales et exemples



1. Vérification de l'heure actuelle



Supposons que nous voulions exécuter une tâche toutes les 15 minutes. Expression CRON : */15 * * * *. Créons un objet et vérifions si la tâche doit être lancée maintenant :



<?phpuse Cron\\CronExpression;

$expression = CronExpression::factory('*/15 * * * *');if ($expression->isDue()) { echo "La tâche doit être exécutée maintenant !";} else { echo "Ce n'est pas encore l'heure.";}?>


La méthode isDue() vérifie si l'heure actuelle correspond à l'expression. Par défaut, le fuseau horaire du serveur est utilisé.



2. Obtenir la prochaine date d'exécution



Il est parfois utile de savoir à l'avance quand une tâche sera lancée :



<?phpuse Cron\\CronExpression;

$expression = CronExpression::factory('0 6 * * 1-5'); // tous les jours de la semaine à 6h00$nextRun = $expression->getNextRunDate();echo "Prochaine exécution : " . $nextRun->format('Y-m-d H:i:s');?>


Résultat : Prochaine exécution : 2025-03-10 06:00:00 (si aujourd'hui est vendredi, alors lundi prochain).



3. Date d'exécution précédente



La méthode getPreviousRunDate() renvoie le dernier moment où la condition était remplie :



<?php$prevRun = $expression->getPreviousRunDate();echo "Dernière exécution : " . $prevRun->format('Y-m-d H:i:s');?>


4. Gestion des fuseaux horaires



Par défaut, le fuseau horaire du serveur est utilisé, mais vous pouvez définir le vôtre :



<?php$expression = CronExpression::factory('0 9 * * *');$expression->setTimezone(new DateTimeZone('Europe/Moscow'));if ($expression->isDue()) {    echo "Il est 9h00 à Moscou — il est temps d'agir !";}?>


Création d'un planificateur de tâches simple



Maintenant, rassemblons tout cela et écrivons une petite classe qui exécutera les tâches selon un planning. Supposons que nous ayons une liste de tâches avec des expressions CRON et des callbacks.



<?phpclass                    

Recommendations