Créer une tache CRON chez 1and1

créer tache cron chez hébergeur 1and1

Qu’est ce qu’une tâche CRON ou CRONjob ?

Il s’agit d’une tâche automatisée, appelée à intervalles réguliers et permettant par exemple d’alimenter une base de données, d’envoyer des mails ou de faire ce que vous voulez sur votre site internet.

Concrètement, vous pouvez décider que tous les jours à 3h du matin vous allez appeler un script PHP (ça marche aussi avec d’autres langages :) ) pour, par exemple, insérer dans une base de données MySQL des informations provenant d’un flux XML.

1and1 et les tâches CRON

Si vous avez un hébergement mutualisé chez OVH, le processus est très simple : grâce à l’interface d’administration il vous suffit d’indiquer le chemin du script, la fréquence d’exécution et c’est tout!

Chez 1&1, en mutualisé, il n’est pas possible (il me semble, à confirmer) de créer de tâche CRON, il faut avoir un serveur dédié… et ne pas avoir peur de lignes de commande Linux.

En suivant les étapes ci-dessous vous devriez y arriver sans problème.
Je ne m’intéresserai pour le moment qu’à MacOS (et par extension tous les systèmes Linux), je compléterai l’article avec la procédure Windows lors d’une mise à jour.

Connexion en SSH au serveur 1&1

Cette première étape nécessite:

  • l’identifiant du compte FTP principal, de la forme « u768554814« ,
  • le mot de passe associé,
  • le nom de domaine par défaut du serveur lorsque vous avez ouvert votre compte, ex: « s123456789.onlinehome.fr« 

Ouvrez ensuite l’application Applications > Utilitaires > Terminal et entrez la commande suivante, en prenant soin d’y intégrer vos propres paramètres :
ssh u768554814@s123456789.onlinehome.fr

On vous demande alors votre mot de passe que vous devez entrer : u768554814@s123456789.onlinehome.fr’s password: 

Attention, par mesure de sécurité celui-ci ne s’affiche pas lorsque vous le tapez, c’est normal !

Vous êtes connecté en SSH.

Programmation de la tâche CRON

Je ne parlerai pas de la création de votre script PHP étant donné que cela dépend entièrement de vos besoins, j’aborderai cependant à la fin de l’article des soucis que vous pourriez rencontrer et comment les régler.

Tout d’abord récupérez le chemin exact de votre script php grâce à
<?php echo $_SERVER['DOCUMENT_ROOT'];?>
quelque chose comme ça s’affichera :
/kunden/homepages/25/d424931851/htdocs/
Mettez ça de côté, vous en aurez bientôt besoin.

Dans la fenêtre du terminal entrez la commande crontab -e (éditer les tâches CRON).

Appuyez sur la touche « i », vous serez alors en mode « Insert » ce qui vous permettra d’ajouter une nouvelle ligne et de créer votre tâche CRON.

Positionnez le curseur après les lignes de commentaires (signalées par un caractère #) et entrez ceci, l’explication suit juste après :

59 23 * * * /usr/bin/php5.4 /kunden/homepages/25/d424931851/htdocs/chemin_vers_votre_script > /kunden/homepages/25/d424931851/htdocs/chemin_vers_fichier_log/file.log 2>&1

  • 59 23 * * *  correspond à la fréquence d’exécution du script : minute, heure, jour, mois, jour de la semaine (une notice pour savoir comment paramétrer la fréquence)
  • /usr/bin/php5.4 indique que votre script utilise PHP 5.4 (si vous ne l’indiquez pas vous risquez d’obtenir une erreur)
  • /kunden/homepages/25/d424931851/htdocs/chemin_vers_votre_script le chemin vers votre script php que vous aurez trouvé grâce à $_SERVER['DOCUMENT_ROOT']
  • /kunden/homepages/25/d424931851/htdocs/chemin_vers_fichier_log/file.log 2>&1 indique qu’on va enregistrer dans un fichier file.log toutes les erreurs qui peuvent avoir lieu lors de l’exécution du script

Une fois que vous avez vérifié les différents chemins, appuyez sur la touche « Esc » puis entrez « :x » pour sauvegarder la tâche et quitter le mode édition.

C’est fini, votre tâche CRON va s’exécuter tous les jours à 23h59.

Pour tester votre tâche CRON en « situation réelle » vous pouvez indiquer */10 * * * * ce qui déclenchera l’exécution du script toutes les 10 minutes.

Vérifier la bonne mise en oeuvre de sa tâche CRON

Pour vérifier que le script va s’exécuter sans erreur, dans la même fenêtre du terminal, entrez la commande suivante et patientez :

php5 -f /kunden/homepages/25/d424931851/htdocs/chemin_vers_votre_script > /kunden/homepages/25/d424931851/htdocs/chemin_vers_fichier_log/file.log 2>&1

Le script PHP va être exécuté, les erreurs potentielles s’afficheront dans la fenêtre et s’enregistreront dans le fichier log que vous avez indiqué.

Il se peut qu’en mode CRON, les fonctions PHP d’accès aux fichiers par URL soient désactivées, exemple: get_url_content(), simple_load_xml()…
Pour corriger ce comportement et en autoriser le fonctionnement, créez un fichier nommé « php.ini » à la base de votre serveur, dans lequel vous allez ajouter cette ligne : allow_url_fopen = ON

Pour être sûr d’indiquer la bonne version de PHP (ex : /usr/bin/php5.4), entrez la commande whereis php dans la fenêtre du terminal lorsque vous êtes connecté en SSH, voilà ce qui apparait :tache cron whereis php

Version Windows pour plus tard !