Créer une tâche cron (et que faire si elle ne s'exécute pas)
Avec un cronjob (dans DirectAdmin : Tâches Cron), vous faites exécuter automatiquement un script à des moments fixes, par exemple chaque nuit. Vous trouverez ci-dessous comment en créer un et que faire s'il ne fonctionne pas.
Règles pour les cronjobs
- Pour Webhost One et Webhost Two, une tâche ne peut démarrer qu'une fois toutes les 10 minutes maximum, pour l'ensemble de vos tâches.
- Pour les forfaits Power Webhost, les tâches peuvent s'exécuter plus souvent.
- Répartissez plusieurs cronjobs dans le temps et choisissez un moment calme, comme 03:17 plutôt que minuit pile.
- Les cronjobs lourds qui sollicitent longtemps le serveur ne sont pas autorisés. Plusieurs sites web s'exécutent sur le même serveur. Si nécessaire, nous arrêtons un cronjob. Veillez donc à ce que vos tâches restent courtes et ne s'exécutent pas plus souvent que nécessaire.
Créer un cronjob
- Connectez-vous à DirectAdmin et cliquez, sous Fonctions Avancées, sur Tâches Cron.
- Cliquez sur Créer une tâche cron.
- Renseignez la minute, l'heure, le jour, le mois et le jour de la semaine. Indiquez toujours la minute avec un chiffre, pas un astérisque, sinon la tâche s'exécute chaque minute.
- Dans le champ de la commande, indiquez le chemin complet, par exemple :
/usr/local/bin/php -q /home/utilisateur/domains/votredomaine.nl/public_html/tache.php
Remplacez utilisateur par votre nom d'utilisateur DA. - Cliquez sur Créer.

E-mail après chaque cronjob
Le résultat d'un cronjob est envoyé au compte e-mail par défaut de votre forfait, voir Le compte e-mail par défaut dans DirectAdmin. Vous pouvez aussi envoyer le résultat à une adresse de votre choix avec Envoyer toute la sortie cron par e-mail. Si vous ne souhaitez pas recevoir d'e-mail, cliquez lors de la création sur Éviter les e-mails, ou ajoutez après la commande :
>/dev/null 2>&1
Attention avec les scripts PHP
Un script exécuté depuis un cronjob ne sait pas sous quel domaine il s'exécute. $_SERVER['SERVER_NAME'] et $_SERVER['DOCUMENT_ROOT'] sont vides, et un include avec un chemin relatif peut échouer. Ajoutez donc en haut de votre script :
$pad = '/home/utilisateur/domains/votredomaine.nl/public_html'; $_SERVER['SERVER_NAME'] = 'votredomaine.nl'; $_SERVER['DOCUMENT_ROOT'] = $pad; set_include_path($pad . PATH_SEPARATOR . get_include_path());
Votre cronjob ne s'exécute pas ?
Parcourez ces points un par un :
- Lisez la sortie. Retirez temporairement
>/dev/null 2>&1et consultez l'e-mail dans le compte e-mail par défaut, ou configurez une adresse de votre choix. Vous y trouverez souvent exactement ce qui ne va pas. Vous pouvez aussi écrire la sortie dans un fichier journal en ajoutant après la commande>> /home/utilisateur/cron-log.txt 2>&1. - Vérifiez le chemin. Le message Could not open input file signifie que le chemin vers le script est incorrect. Consultez le Gestionnaire de fichiers : le chemin commence par
/home/utilisateur/domains/. - Vérifiez la version de PHP. Avec
/usr/local/bin/php, la tâche utilise la même version de PHP que votre site web. Si votre script ne fonctionne qu'avec une autre version, modifiez cela dans Select PHP version. - Testez la commande manuellement. Si vous disposez d'un forfait avec Terminal, collez-y la commande et observez ce qui se passe, voir Ouvrir SSH ou le Terminal dans DirectAdmin. Sans Terminal, ouvrez le script dans votre navigateur, ou appelez-le dans le cronjob via
curl --silent https://www.votredomaine.nl/tache.php. - Vérifiez les droits. Le script doit être lisible : les fichiers doivent être en 644 et les dossiers en 755. Voir Droits des fichiers et dossiers (chmod).
- Vérifiez l'horaire. Regardez sous La tâche cron s'exécute : si la tâche s'exécute au moment que vous pensiez. Si un astérisque figure au niveau des minutes, la tâche s'exécute chaque minute et peut être arrêtée.
- Vérifiez la limite de votre forfait. Si la tâche s'exécute plus souvent que votre forfait ne le permet, ou si elle dure trop longtemps, elle est interrompue. Répartissez alors le travail sur plusieurs passages.
date >> /home/utilisateur/cron-log.txt; avant votre commande.Voir aussi dans le guide DirectAdmin : Le compte e-mail par défaut de votre forfait.
Explications détaillées avec captures d'écran : Tâches Cron : exécuter des tâches automatiquement dans le guide DirectAdmin.
