Planificateur de tâches PHP

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

Qu'est-ce qu'un planificateur de tâches en PHP ?

Un planificateur de tâches (task scheduler) est un outil permettant d'automatiser l'exécution d'opérations répétitives dans les applications PHP. Contrairement à CRON, qui est géré au niveau du serveur, les bibliothèques PHP permettent de définir des horaires de manière flexible directement dans le code du projet, en intégrant les tâches à la logique métier (par exemple, envoi de newsletters, vidage du cache, génération de rapports).

Pourquoi un planificateur de tâches est-il nécessaire ?

Sans planificateur, les développeurs sont obligés d'exécuter manuellement des scripts via CRON, ce qui complique la gestion des dépendances et les tests. Un planificateur PHP résout ces problèmes :

  • Flexibilité : les tâches peuvent être mises en pause, leur fréquence modifiée sans modifier les fichiers système.
  • Journalisation : mécanismes intégrés d'enregistrement des erreurs et de l'exécution.
  • Files d'attente : intégration avec RabbitMQ, Redis pour les tâches en arrière-plan.
  • Tests : possibilité d'exécuter les tâches manuellement depuis la console ou via des tests.

Installation

Un planificateur populaire est vlucas/phpdotenv (à ne pas confondre avec dotenv) ou cron-expression. Cependant, le plus fonctionnel est symfony/scheduler (de Symfony) ou peppeocchi/php-cron-scheduler. Installation via Composer :

composer require peppeocchi/php-cron-scheduler

Fonctionnalités principales

  • Prise en charge des expressions CRON : */5 * * * * — toutes les 5 minutes.
  • Tâches uniques : avec une heure d'exécution précise.
  • Tâches conditionnelles : exécution uniquement si une condition est remplie (par exemple, un fichier existe).
  • Exécution parallèle : les tâches ne se bloquent pas mutuellement.
  • Gestion des erreurs : nouvelle tentative automatique en cas d'échec.

Exemple de code PHP

require 'vendor/autoload.php';

use GO\\Scheduler;

$scheduler = new Scheduler();

// Tâche toutes les 10 minutes$scheduler->php('/path/to/script.php') ->everyMinute(10) ->output('/tmp/output.log');

// Tâche avec une expression CRON$scheduler->call(function() { echo "Envoi d'email...";})->cron('0 9 * * 1'); // Chaque lundi à 9h du matin

// Tâche conditionnelle$scheduler->php('/path/to/report.php') ->daily() ->when(function() { return file_exists('/tmp/flag.txt'); });

$scheduler->run();

Quand l'utiliser ?

Le planificateur est idéal pour :

  • Le nettoyage régulier des fichiers temporaires ou de la base de données.
  • L'envoi de notifications push programmées.
  • La mise à jour de données agrégées (par exemple, des classements).
  • L'intégration avec des API externes (parsing, synchronisation).

Évitez d'utiliser le planificateur pour les tâches nécessitant une exécution immédiate — les files d'attente (comme RabbitMQ ou Redis) sont plus adaptées pour cela.

Conclusion

Un planificateur de tâches en PHP est un outil puissant pour automatiser les tâches répétitives. Il est particulièrement utile dans les projets où les entrées CRON sur le serveur sont peu pratiques ou nécessitent des modifications fréquentes. L'installation via Composer prend une minute, et les paramètres flexibles permettent d'adapter la planification à n'importe quel processus métier.

Recommendations