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 être gérées depuis le terminal (commande crontab), la section Tâches Cron de cPanel facilite la configuration grâce à une interface simple.
E-mail de notification
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. Choisissez une fréquence courante ou remplissez minute, heure, jour du mois, mois et jour de la semaine. Saisissez ensuite la commande et enregistrez.

Dans la commande, on indique ce que l'on veut exécuter. Par exemple, si l'on dispose d'un fichier cron.php dans public_html qui effectue des tâches de maintenance, il faut indiquer :
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-en la rotation. Si vous ne voulez ni journal ni e-mails, terminez la commande par >/dev/null 2>&1 : la sortie est ignorée. C'est utile pour les tâches exécutées toutes les quelques minutes, qui rempliraient la boîte mail d'avis, mais cela masque aussi toute défaillance de la tâche.
Exécuter une URL depuis cron
Lorsqu'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 nécessairement le code de retour. Une fois le fonctionnement confirmé, 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 lorsqu'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 autre chaque minute, les tâches peuvent se chevaucher et épuiser les processus. L'application elle-même doit mettre en place un verrou lorsqu'elle n'accepte pas les exécutions simultanées.
Tâches cron actuelles
Dans Tâches Cron actuelles, vous disposez de la liste des tâches cron ajoutées, pour les modifier ou les supprimer selon les 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 ; vérifiez 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.
Après l'enregistrement, vérifiez la prochaine exécution grâce à son journal ou au résultat attendu. Un test manuel réussi ne prouve pas que cron dispose du même environnement : il ne charge généralement pas .bashrc, 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 travaux que celle-ci lance en arrière-plan ni les processus distants qui se poursuivent 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 encaissements, des envois ou des modifications de données, vérifiez son état avant de la relancer après un délai d'attente dépassé.
Workers de files d'attente : cron ou processus persistants
Un worker de file d'attente lancé depuis cron doit se terminer lorsqu'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 se termine ; si le précédent travaille encore, flock -n saute cette exécution. Les travaux attendent au maximum une minute. Dans Laravel, vous pouvez aussi le lancer depuis le scheduler, comme nous l'expliquons dans Installer Laravel.
N'utilisez pas cron pour laisser tourner un worker avec & ou nohup : personne ne le surveille, donc s'il tombe il ne redémarre pas, et sans verrou un nouveau s'ajoute chaque minute.
Dans les offres Avanza, Max et Elastic, les processus persistants maintiennent en permanence un worker de file d'attente, Horizon ou une commande personnalisée, et le relancent 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 contrôle 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 automatiquement les anciens e-mails dans cPanel Supprimez chaque jour les e-mails de plus de X jours d'un compte, de tous les comptes d'un domaine o...
- API de cPanel (UAPI) : automatiser la messagerie, le FTP et les redirections depuis SSH, cURL ou PHP Utilisez l'API de cPanel avec la commande uapi en SSH ou avec un jeton depuis un autre serveur. Exem...
- 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...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.