Développement et bases de données
Créer et exécuter des tâches cron (cron jobs) dans cPanel
Une tâche cron exécute une commande à la fréquence que vous configurez. Elle sert à programmer des actions comme traiter une file d'attente, générer un rapport ou lancer la maintenance d'une application.
Même si elles peuvent se gérer depuis le terminal (commande crontab), la section Tâches Cron / Cron Jobs de cPanel facilite la configuration grâce à une interface simple.
Adresse e-mail pour les notifications
C'est l'adresse à laquelle cron envoie la sortie standard et les erreurs produites par la commande. Si la tâche ne génère aucune sortie, vous ne recevrez pas de message confirmant chaque exécution.
Ajouter de nouvelles tâches
Dans cPanel > Tâches Cron / Cron Jobs, utilisez Ajouter une nouvelle tâche cron / Add New Cron Job. Choisissez une fréquence courante ou renseignez minute, heure, jour du mois, mois et jour de la semaine. Saisissez ensuite la commande et enregistrez.
Dans la commande, indiquez ce que vous voulez exécuter. Par exemple, si vous avez un fichier cron.php dans public_html qui effectue des tâches de maintenance :
cd /home/usuario_cpanel/public_html && /opt/alt/php83/usr/bin/php cron.php >> /home/usuario_cpanel/cron.php.log 2>&1
L'exemple utilise PHP 8.3 : vérifiez que cette version existe et qu'elle est compatible. Utilisez toujours le chemin complet du PHP de votre application : /usr/local/bin/php ou php tout court peuvent correspondre à une autre version, avec d'autres extensions. cd fixe le répertoire de travail pour les scripts qui utilisent des chemins relatifs ; && évite de les exécuter depuis un autre dossier si le changement de répertoire échoue. L'exemple enregistre la sortie dans un journal pour ne pas perdre les erreurs. Surveillez ce fichier et faites-le tourner : tout rediriger vers /dev/null évite les e-mails, mais masque aussi toute erreur de la tâche.
Appeler une URL depuis cron
Quand une application fournit une URL de tâches, vous pouvez l'appeler avec curl :
curl --fail --silent --show-error --max-time 300 https://tudominio.com/ruta-de-cron
Pendant les premiers essais, conservez la sortie de diagnostic et vérifiez le résultat de la tâche dans l'application. L'e-mail contient la sortie, pas forcément le code de retour. Une fois que vous avez confirmé que tout fonctionne, vous pouvez l'enregistrer dans un journal privé. Créez d'abord le dossier de destination avec les permissions adéquates :
curl --fail --silent --show-error --max-time 300 https://tudominio.com/ruta-de-cron >> /home/usuario_cpanel/logs/cron-url.log 2>&1
Il est préférable d'exécuter directement la commande PHP ou CLI de l'application quand elle existe, car cela évite le DNS, le SSL et une requête web complète. N'incluez pas de mots de passe ni de jetons permanents dans une URL qui pourrait rester enregistrée dans des historiques et des journaux.
Choisissez un intervalle supérieur à la durée maximale d'exécution. Si un appel dure cinq minutes et que vous en programmez un chaque minute, les tâches peuvent se chevaucher et épuiser les processus. L'application elle-même doit mettre en place un verrou quand elle n'admet pas d'exécutions simultanées.
Tâches cron actuelles
La liste Tâches cron actuelles / Current Cron Jobs affiche les tâches ajoutées pour les modifier ou les supprimer selon vos besoins.
Vérifier la programmation
| Fréquence | Minute | Heure | Jour du mois | Mois | Jour de la semaine |
|---|---|---|---|---|---|
| Toutes les 15 minutes | */15 |
* |
* |
* |
* |
| Chaque jour à 03:10 | 10 |
3 |
* |
* |
* |
| Chaque lundi à 03:10 | 10 |
3 |
* |
* |
1 |
Ces heures correspondent à l'environnement cron du serveur ; confirmez son fuseau horaire avant de programmer une action liée à une heure locale. Dans cPanel, remplissez ces champs séparément : n'ajoutez pas les cinq champs dans la case Commande / Command.
Après l'enregistrement, vérifiez la prochaine exécution grâce à son journal ou au résultat attendu. Un essai manuel réussi ne prouve pas que cron dispose du même environnement : il ne charge généralement ni .bashrc, ni les variables de votre terminal, ni NVM. Utilisez des chemins absolus et configurez explicitement ce dont le script a besoin.
Éviter les exécutions simultanées
Si la commande s'exécute au premier plan et que flock est disponible, vous pouvez maintenir un verrou pendant toute son exécution :
/usr/bin/flock -n /home/usuario_cpanel/tarea.lock /opt/alt/php83/usr/bin/php /home/usuario_cpanel/apps/mi-proyecto/tarea.php
Vérifiez les chemins et que l'application ne dépend pas d'un autre répertoire de travail. Le verrou est libéré à la fin de la commande ; il ne couvre ni les tâches qu'elle lance en arrière-plan ni les processus distants qui continuent après un appel HTTP. S'il n'obtient pas le verrou, -n saute cette exécution : vérifiez que ce comportement convient à votre tâche.
Supprimer une entrée cron empêche les exécutions futures, mais n'arrête pas celle qui est déjà en cours. Si la tâche effectue des paiements, des envois ou des modifications de données, vérifiez son état avant de la relancer après un délai dépassé.
Workers de files d'attente : cron ou processus persistants
Un worker de file d'attente lancé depuis cron doit s'arrêter quand il n'y a plus de travail et ne pas se superposer à celui de la minute suivante. Par exemple, pour Laravel, chaque minute :
cd /home/usuario_cpanel/apps/mi-proyecto && /usr/bin/flock -n /home/usuario_cpanel/.cola-mi-proyecto.lock /opt/alt/php84/usr/bin/php artisan queue:work --stop-when-empty --max-time=300
Il traite ce qui est en attente puis s'arrête ; si le précédent travaille encore, flock -n saute cette exécution. Les tâches attendent au maximum une minute. Avec Laravel, vous pouvez aussi le lancer depuis le scheduler, comme nous l'expliquons dans Installer Laravel.
N'utilisez pas cron pour laisser un worker tourner avec & ou nohup : personne ne le surveille, donc s'il tombe il ne revient pas, et sans verrou un nouveau s'ajoute chaque minute.
Sur les plans Avanza, Max et Elastic, les processus persistants maintiennent en permanence un worker de file d'attente, Horizon ou une commande personnalisée, et le redémarrent s'il tombe. Si vous les utilisez, vous verrez dans vos tâches cron une ligne qui se termine par # hostsuar-procesos : c'est le surveillant qui les vérifie chaque minute. Ne la modifiez pas et ne la supprimez pas ; elle se gère depuis Outils > Processus.
Une ligne avec schedule:run qui se termine par # hostsuar-deploy- suivi d'un numéro est le scheduler d'une application Laravel que Deploy+ a programmé lors de sa publication. Celle-ci vous appartient : vous pouvez la modifier ou la supprimer comme n'importe quelle autre.
Cela peut aussi vous aider
- Processus persistants : workers de files d'attente, Horizon et commandes en fonctionnement continu Laissez tourner des workers de files d'attente Laravel, Horizon, un Redis persistant ou une commande...
- Supprimer les anciens e-mails en toute sécurité Nettoyez les anciens messages sans effacer le Maildir à l'aveugle : validez le compte et le dossier,...
- Binaires et outils disponibles : FFmpeg, Tesseract, ImageMagick, cURL et plus Consultez les binaires disponibles pour la vidéo, les images, les PDF, l'OCR, le réseau, le DNS, le...
- Gestionnaires Apache (Apache Handlers) Définissez depuis cPanel quel gestionnaire Apache doit interpréter une extension donnée et découvrez...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.