Bonjour à tous <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Tout d'abord merci à tous pour l'aide précieuse apportée tout au long de ce fil de discussion pour résoudre le problème du cron en général et plus spécifiquement sur le serveur 1&1 avec le pack premium gratuit.
Afin de faire gagner du temps aux entres qui pourraient rencontrer ce type de problème, je propose ici une synthèse des différents solutions possibles pour lancer un cron. Certaines solutions marchent bien pour certains et moins bien ou pas du tout chez d'autres ( sur même serveur !!!) alors avec les différentes solutions proposées, chacun pourra peut-être s'y retrouver.
Le CRONJOB sur serveur 1&1
Les Cronjobs, comment faire, des exemples ?
Le Cronjobs est le programme qui va nous permettre d'automatiser des taches comme des backups et autres.
Chez 1&1 Internet, on le fait par SSH, il n'y a pas d'interface web pour créer son CRON. On ouvre donc une session SSH via Putty ou autre.
Une fois en SSH on a deux commandes principalement pour gérer le Cronjobs:
crontab -l (elle nous permet de lister le contenu du fichier)
crontab -e (elle permet d'éditer notre fichier et donc d'ajouter, modifer, supprimer des cron)
Nous allons donc créer notre premier Cron, pour cela:
1)On édite notre fichier cron: crontab -e
2) Ensuite pour écrire dans le fichier, il faut appuyer sur la touche (i) qui nous donne le droit d'(i)nsérer dans le fichier.
3) On met en premier cette ligne qui va définir à qui les emails doivent être envoyés: MAILTO=votre@email.tld Cela sera alors la première ligne de notre fichier.
4) Ensuite, on met une ligne, cette ligne est donc "la tâche cron", voici un exemple: 0 2 * * 2 $HOME/backupsql/backup_fansoleil_espacemembre.php
En fait, cette tâche va faire un backup d'une de mes bases SQL tous les Mardis à 2h00.
Maintenant que l'on a vu la syntaxe, nous allons détailler les informations par rapport à cet exemple, il y a 5 paramètres à donner avant la commande à faire. Voici les 5 paramètres dans leur ordre de demande.
1 => c'est les minutes (0-59)
2 => c'est l'heure (0-23)
3 => c'est le jour du mois (0-31)
4 => c'est le mois (1-12)
5 => c'est le jour de la semaine (0-7)
Donc, dans mon Cron, on reprends 0 2 * * 2, cela veut donc dire: 0 2 (à 2h00 du matin, je reprends la valeur 1 et 2)
* (tous les jours du mois)
Si on veut faire une exécution hebdomadaire, un met * ici, cela veut dire tous les jours On sera alors limité par la valeur 5 qui précisera le jour de la semaine dans mon exemple, si la 5 est aussi en * alors le backup sera fait tous les jours.
* (tous les mois)
On ne donne pas de mois ici afin qu'il s'éxécute tous les mois de l'année sans limitations. 2 (tous les mardis) On précise ici que le Cronjobs doit appeler cette tache tous les mardis de chaque semaine. 1 étant le lundi et le dimanche étant le 7.
Maintenant reprenons cette ligne en détails: $HOME/backupsql/backup_fansoleil_espacemembre.php
Il s'agit de l'action que va faire le Cronjobs, la valeur $HOME va nous déterminer automatiquement le chemin complet du compte. Il n'est donc pas nécessaire en mettant cette valeur de mettre un chemin comme:
/kunden/homepages/35/d88495771/htdocs/
Ce dernier peut si le client le souhaite être simplement remplacé par $HOME
Maintenant que l'on a copier cette ligne (enfin ces deux lignes) dans notre fichier cron, il nous faut l'enregistrer. Pour cela, on appuie sur la touche ESC puis sur : puis sur w enfin sur q L'éditeur se referme alors après avoir enregistré notre fichier.
On peut le vérifier maintenant en entrant la commande:
contab -l
Voici quelques autres exemples que l'on peut retrouver:
30 05 * * * $HOME/test.php
Dans cet exemple, on appel un fichier test.php tous les jours à 5h30
00 01 1
( attention, un esapce entre chaque étoile et avant les tirets. La lettre O en majuscule)
3) La solution qui fonctionne chez moi
*/5 * * * * /usr/local/bin/php $HOME/wsb39xxxxxxx/admin/cron.php
Pour ceux qui ne disposent d'un accès SSH sur leur serveur, une solution intéressante proposée ( je ne l'ai pas encore testée mais elle donne satisfaction à son auteur)
- Dans le fichier header.html du thème utilisé sur la page d'accueil du site, rajouter les lignes suivantes tout à la fin :
- Créer un fichier vide appelé cron.time et par FTP le déposer à la racine du dossier moodledata de votre site Moodle
- Réglages: la valeur indique le nombre de secondes entre chaque déclenchement de la tâche; 3600 secondes = 1 heure. Changer cette valeur comme vous voulez.
- A chaque affichage d'une page sur le site Moodle, une vérification est faite pour savoir s'il est temps de déclencher le CRON (selon la valeur indiquée ci-dessus).
- Seul petit inconvénient relevé: lorsqu'il se trouve qu'une page est affichée et qu'il est l'heure de déclencher le CRON, on note un petit ralentissement d'affichage de la page en question.
J'espère que cette petite synthèse servira à d'autres pour régler d'éventuels problèmes de ce type ( en attendant un version sur le wiki !)