Qu'est-ce qu'un planificateur de tâches PHP ?
Un planificateur de tâches (Job Scheduler) est une bibliothèque PHP qui permet d'exécuter des tâches périodiques (tâches cron) directement depuis le code de l'application, sans dépendre du crond système. Il est particulièrement utile sur les hébergements partagés, où l'accès au crontab est limité, ou dans les environnements conteneurisés (Docker).
Pourquoi un planificateur est-il nécessaire ?
- Autonomie — toutes les règles de périodicité sont stockées dans le code PHP, et non dans les fichiers de configuration système.
- Flexibilité — il est possible de modifier dynamiquement le planning, de suspendre des tâches et de journaliser l'exécution.
- Intégration — s'intègre facilement dans les frameworks (Laravel, Symfony) et les ORM.
Installation
Installez via Composer :
composer require dragonmantank/cron-expressionIl s'agit de la bibliothèque de base pour travailler avec les expressions cron. Pour un planificateur complet, on utilise souvent peppeocchi/php-cron-scheduler :
composer require peppeocchi/php-cron-schedulerFonctionnalités principales
- Analyse des expressions cron — vérifie si l'heure actuelle correspond au modèle (
* * * * *). - Multitâche — exécution de plusieurs tâches dans un seul processus.
- Parallélisme — via
exec()oupcntl_fork(). - Journalisation — redirection de stdout/stderr vers un fichier.
- Gestion des erreurs — tentatives répétées, notifications.
Exemple de code
<?phprequire 'vendor/autoload.php';
use GO\\Scheduler;
$scheduler = new Scheduler();
// Tâche : chaque minute$scheduler->call(function() { echo "Exécuté à " . date('Y-m-d H:i:s') . "";})->everyMinute();
// Tâche : toutes les heures à 30 minutes$scheduler->call('cleanup_logs')->at('30 * * * *');
// Tâche : les jours ouvrés à 9h00$scheduler->exec('php artisan report:generate')->at('0 9 * * 1-5');
// Lancement de toutes les tâches prêtes$scheduler->run();Quand l'utiliser
Le planificateur de tâches PHP est idéal pour :
- l'envoi de newsletters programmées ;
- le nettoyage des données obsolètes (logs, sessions) ;
- la génération de rapports en dehors des heures de pointe ;
- la synchronisation avec des API externes (une fois par heure) ;
- la mise à jour du cache (toutes les 5 minutes).
Ne remplacez pas le cron système pour les opérations système critiques (sauvegarde de base de données, mise à jour des certificats) — utilisez-le comme une couche supplémentaire pour la logique métier.