« Cron » : différence entre les versions

De MoodleDocs
Aller à :navigation, rechercher
(Page créée avec « {{Installation}}{{Traduction}} Le processus Moodle ''cron'' est un script PHP, partie intégrante de la distribution standard de Moodle, qui doit être lancé régulièrement... »)
 
(25 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Installation}}{{Traduction}}
{{Installation}}Le processus Moodle ''cron'' est un script PHP, partie intégrante de la distribution standard de Moodle, qui '''doit être lancé régulièrement'''. Ce script lance diverses tâches programmées à différents intervalles.
Le processus Moodle ''cron'' est un script PHP, partie intégrante de la distribution standard de Moodle, qui doit être lancé régulièrement. Ce script effectue diverses tâches à différents intervalles programmés.


'''IMPORTANT ! Ne sauter pas l'étape de configuration du processus cron sur le serveur hébergeant votre installation de Moodle. Votre site ne fonctionnera pas correctement sans lui !'''
'''IMPORTANT ! Ne sautez pas l'étape de configuration du processus cron sur le serveur hébergeant votre installation de Moodle. Votre site ne fonctionnera pas correctement sans lui !'''


A special program (typically called - not surprisingly - 'cron') is used to run the Moodle cron script at a regular interval.  The Moodle cron script runs tasks include sending mail, updating Moodle reports, RSS feeds, activity completions, posting forum messages and other tasks. Since different tasks have different schedules, not every task will run in Moodle when the cron script is triggered.  
Il est recommandé de lancer le cron à ''une fréquence d'une fois par minute'', comme cela est requis pour la suppression synchrone des activités lors de l'utilisation de la corbeille.


The cron program (that runs the Moodle script) is a core part of Unix based systems (including Linux and OSX) being used to run all manner of time-dependent services. On Windows the simplest solution is to create a task in the Windows Task Scheduler and set it to run at regular intervals. On shared hosting, you should find the documentation (or ask support) how cron is configured.  
Le programme cron (qui lance le script cron de Moodle) fait partie de façon standard des systèmes Unix (y compris Linux et macOS) et est utilisé pour lancer toutes sortes de services dépendant de l'heure. Sous Windows, la solution la plus simple pour répliquer ce comportement est de créer une tâche dans le Gestionnaire des tâches Windows et de la faire lancer à intervalles réguliers. Sur les serveurs mutualisés, il vous faudra trouver la documentation (ou demander de l'assistance) sur la façon de configurer le cron. La plupart des serveurs mutualisés offrent CPanel pour gérer les sites, et auront donc une section pour configurer les tâches Cron sur le panneau de configuration.


Essentially, the task involves adding a single command to the list of cron activities on your system. On Unix based systems this list is a file called a 'crontab' which all users have.
Normalement, pour configurer le cron, il s'agit d'ajouter une unique commande à la liste des activités du cron déjà existantes sur votre système. Sur les systèmes Unix, cette liste est contenue dans le fichier dénommé ''crontab'', propre à chaque utilisateur.  


== General discussion ==
== Discussion générale ==


See the later sections for your server type; this section contains some general background information.  
Ce paragraphe détaille diverses informations de base. Voyez plus loin pour des instructions propres à votre type de serveur.


There are essentially two steps to implementing cron:
Deux étapes sont essentielles pour faire fonctionner le cron :
# identifying the correct command to run
# identifier la commande correcte à lancer, et
# finding the right place on your system to put the command
# trouver le bon endroit où indiquer cette commande sur votre système.


=== Working out the Moodle cron command ===
=== Comprendre le script cron de Moodle ===


Moodle has two different ways to deploy cron which use different scripts within the Moodle install. These are as follows...
Moodle a deux façons différentes de déployer le cron, qui utilisent deux scripts différents de l'installation de Moodle.
# The CLI (command line interpreter) script. This will be at the path '''/path/to/moodle/admin/cli/cron.php'''. If in doubt, this is the correct script to use. This needs to be run by a 'PHP CLI' program on your computer. So the final command may look something like '''/usr/bin/php /path/to/moodle/admin/cli/cron.php'''. You can (and should) try this on your command line to see if it works.
# The web based script. This needs to be run from a web browser and will be accessed via a web url something like '''http://your.moodle.site/admin/cron.php'''. You can find command line based web browser (e.g. wget) so the final command may look like '''/usr/bin/wget http://your.moodle.site/admin/cron.php'''. This has the advantage that it can be run from *anywhere*. If you can't get cron to work on your machine it can be run somewhere else.


=== Finding the right place to put the command ===
# Le script ''CLI'' (command line interpreter = interface en ligne de commande). Ce script se trouve ici : <pre>/chemin/de/moodle/admin/cli/cron.php</pre> Si vous ne savez pas que faire, c'est ce script que vous devez utiliser. Il nécessite d'être lancé sur votre serveur par PHP en ligne de commande. La commande à lancer ressemblera donc à quelque chose comme <pre>/usr/bin/php /chemin/de/moodle/admin/cli/cron.php</pre> Vous pouvez (et devez) tester cette commande à la main pour voir si elle fonctionne. '''Attention ! Vérifiez que la version de PHP en ligne de commande est compatible avec votre version de Moodle. Le programme PHP en ligne de commande est différent de celui utilisé par le serveur web et n'est pas toujours à la même version.'''
# Si pour une raison ou une autre vous ne pouvez pas lancer le script CLI, vous pouvez utiliser le script web. Ce script est lancé depuis un navigateur web en chargeant une URL qui ressemble à celle-ci : '''http://mon.site-moodle.fr/admin/cron.php'''. On peut utiliser pour cela un navigateur web en ligne de commande (par exemple ''wget''), et la commande à lancer ressemblera donc à quelque chose comme <pre>/usr/bin/wget http://mon.site-moodle.fr/admin/cron.php</pre> Cette méthode a l'avantage de pouvoir être lacée *depuis n'importe où*. Si vous n'arrivez pas à configurer le cron sur votre serveur, vous pouvez ainsi le lancer depuis une autre machine.


This really does depend on the system you are using and you should find and read the documentation for your platform or hosting. In most cases getting the Moodle cron to run consists of establishing the correct command (above) and then adding it, and the time to run the command, to some sort of file. This might be either through a specific user interface or by editing the file directly.
=== Trouver l'emplacement où indiquer la commande ===


If using the CLI version you also need to make sure that the cron process is run as the correct user. This is not an issue with the web version.  
Cette étape dépend du serveur que vous utilisez. Il vous faut donc lire la documentation de votre plateforme ou de votre hébergeur. La plupart du temps, mettre en place le cron de Moodle consiste à déterminer la bonne commande à lancer (voir ci-dessus) et à l'ajouter, avec l'horaire adéquat, à un fichier prévu pour cela, soit en le modifiant directement, soit via une interface spécifique.


Example... installing cron on Ubuntu/Debian Linux. Assuming logged in as root..
Si vous utilisez le script CLI, vous devez également vous assurer que le processus cron est lancé avec le bon utilisateur. Il n'est en revanche pas nécessaire de s'en soucier avec la version web.


''use the crontab command to open a crontab editor window for the www-data user. This is the user that Apache (the web server) runs as on Debian based systems''
'''Exemple''' : installation du cron sur Linux Ubuntu/Debian. On suppose que l'utilisateur est connecté en tant que ''root''.
 
''Utiliser la commande crontab pour ouvrir la fenêtre de l'éditeur de crontab pour l'utilisateur www-data. Il s'agit de l'utilisateur qui possède le processus Apache (le serveur web) sur les serveurs Debian''
<pre>
<pre>
$ crontab -u www-data -e
$ crontab -u www-data -e
</pre>
</pre>
''This will open an editor window. To run the cli cron script every 15 minutes, add the line:''
''Cette commande ouvre la fenêtre de l'éditeur. Pour configurer le script cron de sorte à le lancer toutes les minutes, ajouter la ligne :''
<pre>
<pre>
*/15 * * * * /usr/bin/php  /path/to/moodle/admin/cli/cron.php >/dev/null
*/1 * * * * /usr/bin/php  /chemin/de/moodle/admin/cli/cron.php >/dev/null
</pre>
</pre>
NOTE: the final '''>/dev/null''' sends all the output to the 'bin' and stops you getting an email every 15 minutes.
'''Remarque''' : la fin de la commande '''>/dev/null''' envoie à la poubelle la sortie de la commande et évite que vous receviez un courriel toutes les minutes.


== Setting up cron on your system ==
== Mettre en place le cron sur votre système ==
   
   
Choose the information for your server type:
Suivant le type de votre serveur :
 
*[[Cron sur Unix ou Linux]] - Services cron sur les systèmes d'exploitation Unix et Linux.
*''Cron sur Apple OS X'' - Utilisez le service ''crontab'' comme dans [[Cron sur Unix ou Linux]]. Il est cependant aussi possible d'effectuer ceci à la façon OS X, à l'aide de launchd. Pour cela voir [[Cron sur Mac OS X]].
*[[Cron sous Windows]] - Services cron sous Windows
*[[Cron avec des services d'hébergement web]]- Services cron dans divers exemples d'hébergement web.
 
Voici des instructions supplémentaires pour des hébergeurs spécifiques (vérifiez qu'elle sont bien à jour) :
 
*[[Cron sur des serveurs mutualisés 1and1]]
 
== Utilisation de services cron tiers ==
Au lieu d'utiliser votre propre serveur pour lancer le cron, vous pouvez utiliser un service tiers (appelé parfois ''webcron'') :
 
*[https://cron-job.org/ cron-job.org] - un service gratuit (le cron toutes les minutes est possible).
*[http://www.easycron.com EasyCron] - un fournisseur de cron sur le web qui permet de se passer d'un crontab pour lancer les tâches cron.
 
=== Réglages du cron dans Moodle ===
 
Certains réglages de Moodle permettent de contrôler divers aspects de l’opération cron :


*[[Cron with Unix or Linux]]- Cron services on various UNIX and Linux flavored operating systems.
*[[Réglages du cron]] - Réglages du mot de passe du processus cron et du script cron en ligne de commande.
*[[Cron with Windows OS]] - Cron services in Windows
*''Apple OSX'' - use the built-in 'crontab' service which is exactly the same as [[Cron with Unix or Linux]]. However, you might want to do it the 'Apple way' using launchd - see [[Cron with MAC OS X]]
*[[Cron with web hosting services]]- Cron services in various web hosting examples.


Here are some more instructions for specific hosts (please check that these are up to date):
{{Moodle 2.7}}=== Cron depuis Moodle 2.7 ===


*[[Cron on 1and1 shared servers]]
Le cron a été modifié de manière majeure dans Moodle 2.7, et permet l'exécution de tâches programmées et ad hoc (voir MDL-25499).
Les bénéfices de ces changements sont les suivants :
* la programmation de chaque tâche peut être configurée par l'administrateur. Voir [[Tâches programmées]] ;
* les tâches peuvent tourner en parallèle ;
* les processus cron utilisent des verrous pour éviter qu'une tâche soit lancée simultanément par des processus différents.


=== Cron settings in Moodle ===
En conséquence, le cron peut être lancé de manière beaucoup plus fréquente (sans risque de blocage), ce qui permet par exemple d'envoyer les messages des forums plus tôt. '''Il est recommandé de l'adapter à une fréquence d'une fois par minute'''.


There are settings within Moodle that control aspects of cron operation:
=== Cron distant ===


*[[Cron settings]] - Moodle cron process password and CLI settings
L'utilisation de la version web du cron permet de lancer le cron depuis une machine différente de votre serveur Moodle. Par exemple, on pourra utiliser le cron d'une machine Unix pour lancer la version web du cron d'un Moodle installé sur un serveur Windows. Il faudra que l'utilisation via le web soit autorisée.


===Remote cron===
Pour savoir si le ''cron'' a bien été lancé récemment, il suffit de vous rendre avec un compte administrateur à l'adresse : http://mon.moodle/admin/index.php, ou en passant par « Administration du site > Notifications ».
Using the 'web based' version of cron it is perfectly ok to place the cron process on a different machine to the Moodle server. For example, the cron service on a Unix server can invoke the cron web 'page' on a Windows based Moodle server.
<table>
<tr><td style="text-align: center;">[[File:cron_OK.jpg]]</td><td>&nbsp;&nbsp;&nbsp;</td><td style="text-align: center;">[[File:cron_pas_OK.jpg]]</td></tr>
<tr><td style="text-align: center;">Le ''cron'' a bien été lancé<br />(Attention : la date indiquée concerne la recherche des mises à jour !)</td><td>&nbsp;&nbsp;&nbsp;</td><td style="text-align: center;">Le ''cron'' n'a pas été exécuté depuis au moins 24 heures, voire... <br />n'a jamais été lancé !</td></tr>
</table>


==See also==
== Voir aussi ==
* [http://fr.wikipedia.org/wiki/Cron L'article Wikipedia sur la fonction cron en général]
* [http://fr.wikipedia.org/wiki/Cron Article Wikipedia sur le cron]


Quelques discussions des forums (en anglais) :
Discussions sur les forums d'assistance Moodle (en anglais) :
*[http://moodle.org/mod/forum/discuss.php?d=41827 Cron - can someone give me a quick confirmation of function?]
*[http://moodle.org/mod/forum/discuss.php?d=41827 Cron - can someone give me a quick confirmation of function?]
*[http://moodle.org/mod/forum/discuss.php?d=97684 Cronjob Question]
*[http://moodle.org/mod/forum/discuss.php?d=97684 Cronjob Question]

Version du 8 janvier 2019 à 17:51

Le processus Moodle cron est un script PHP, partie intégrante de la distribution standard de Moodle, qui doit être lancé régulièrement. Ce script lance diverses tâches programmées à différents intervalles.

IMPORTANT ! Ne sautez pas l'étape de configuration du processus cron sur le serveur hébergeant votre installation de Moodle. Votre site ne fonctionnera pas correctement sans lui !

Il est recommandé de lancer le cron à une fréquence d'une fois par minute, comme cela est requis pour la suppression synchrone des activités lors de l'utilisation de la corbeille.

Le programme cron (qui lance le script cron de Moodle) fait partie de façon standard des systèmes Unix (y compris Linux et macOS) et est utilisé pour lancer toutes sortes de services dépendant de l'heure. Sous Windows, la solution la plus simple pour répliquer ce comportement est de créer une tâche dans le Gestionnaire des tâches Windows et de la faire lancer à intervalles réguliers. Sur les serveurs mutualisés, il vous faudra trouver la documentation (ou demander de l'assistance) sur la façon de configurer le cron. La plupart des serveurs mutualisés offrent CPanel pour gérer les sites, et auront donc une section pour configurer les tâches Cron sur le panneau de configuration.

Normalement, pour configurer le cron, il s'agit d'ajouter une unique commande à la liste des activités du cron déjà existantes sur votre système. Sur les systèmes Unix, cette liste est contenue dans le fichier dénommé crontab, propre à chaque utilisateur.

Discussion générale

Ce paragraphe détaille diverses informations de base. Voyez plus loin pour des instructions propres à votre type de serveur.

Deux étapes sont essentielles pour faire fonctionner le cron :

  1. identifier la commande correcte à lancer, et
  2. trouver le bon endroit où indiquer cette commande sur votre système.

Comprendre le script cron de Moodle

Moodle a deux façons différentes de déployer le cron, qui utilisent deux scripts différents de l'installation de Moodle.

  1. Le script CLI (command line interpreter = interface en ligne de commande). Ce script se trouve ici :
    /chemin/de/moodle/admin/cli/cron.php
    Si vous ne savez pas que faire, c'est ce script que vous devez utiliser. Il nécessite d'être lancé sur votre serveur par PHP en ligne de commande. La commande à lancer ressemblera donc à quelque chose comme
    /usr/bin/php /chemin/de/moodle/admin/cli/cron.php
    Vous pouvez (et devez) tester cette commande à la main pour voir si elle fonctionne. Attention ! Vérifiez que la version de PHP en ligne de commande est compatible avec votre version de Moodle. Le programme PHP en ligne de commande est différent de celui utilisé par le serveur web et n'est pas toujours à la même version.
  2. Si pour une raison ou une autre vous ne pouvez pas lancer le script CLI, vous pouvez utiliser le script web. Ce script est lancé depuis un navigateur web en chargeant une URL qui ressemble à celle-ci : http://mon.site-moodle.fr/admin/cron.php. On peut utiliser pour cela un navigateur web en ligne de commande (par exemple wget), et la commande à lancer ressemblera donc à quelque chose comme
    /usr/bin/wget http://mon.site-moodle.fr/admin/cron.php
    Cette méthode a l'avantage de pouvoir être lacée *depuis n'importe où*. Si vous n'arrivez pas à configurer le cron sur votre serveur, vous pouvez ainsi le lancer depuis une autre machine.

Trouver l'emplacement où indiquer la commande

Cette étape dépend du serveur que vous utilisez. Il vous faut donc lire la documentation de votre plateforme ou de votre hébergeur. La plupart du temps, mettre en place le cron de Moodle consiste à déterminer la bonne commande à lancer (voir ci-dessus) et à l'ajouter, avec l'horaire adéquat, à un fichier prévu pour cela, soit en le modifiant directement, soit via une interface spécifique.

Si vous utilisez le script CLI, vous devez également vous assurer que le processus cron est lancé avec le bon utilisateur. Il n'est en revanche pas nécessaire de s'en soucier avec la version web.

Exemple : installation du cron sur Linux Ubuntu/Debian. On suppose que l'utilisateur est connecté en tant que root.

Utiliser la commande crontab pour ouvrir la fenêtre de l'éditeur de crontab pour l'utilisateur www-data. Il s'agit de l'utilisateur qui possède le processus Apache (le serveur web) sur les serveurs Debian

$ crontab -u www-data -e

Cette commande ouvre la fenêtre de l'éditeur. Pour configurer le script cron de sorte à le lancer toutes les minutes, ajouter la ligne :

*/1 * * * * /usr/bin/php  /chemin/de/moodle/admin/cli/cron.php >/dev/null

Remarque : la fin de la commande >/dev/null envoie à la poubelle la sortie de la commande et évite que vous receviez un courriel toutes les minutes.

Mettre en place le cron sur votre système

Suivant le type de votre serveur :

Voici des instructions supplémentaires pour des hébergeurs spécifiques (vérifiez qu'elle sont bien à jour) :

Utilisation de services cron tiers

Au lieu d'utiliser votre propre serveur pour lancer le cron, vous pouvez utiliser un service tiers (appelé parfois webcron) :

  • cron-job.org - un service gratuit (le cron toutes les minutes est possible).
  • EasyCron - un fournisseur de cron sur le web qui permet de se passer d'un crontab pour lancer les tâches cron.

Réglages du cron dans Moodle

Certains réglages de Moodle permettent de contrôler divers aspects de l’opération cron :

  • Réglages du cron - Réglages du mot de passe du processus cron et du script cron en ligne de commande.

Nouveauté
Moodle
2.7

Cron depuis Moodle 2.7

Le cron a été modifié de manière majeure dans Moodle 2.7, et permet l'exécution de tâches programmées et ad hoc (voir MDL-25499). Les bénéfices de ces changements sont les suivants :

  • la programmation de chaque tâche peut être configurée par l'administrateur. Voir Tâches programmées ;
  • les tâches peuvent tourner en parallèle ;
  • les processus cron utilisent des verrous pour éviter qu'une tâche soit lancée simultanément par des processus différents.

En conséquence, le cron peut être lancé de manière beaucoup plus fréquente (sans risque de blocage), ce qui permet par exemple d'envoyer les messages des forums plus tôt. Il est recommandé de l'adapter à une fréquence d'une fois par minute.

Cron distant

L'utilisation de la version web du cron permet de lancer le cron depuis une machine différente de votre serveur Moodle. Par exemple, on pourra utiliser le cron d'une machine Unix pour lancer la version web du cron d'un Moodle installé sur un serveur Windows. Il faudra que l'utilisation via le web soit autorisée.

Pour savoir si le cron a bien été lancé récemment, il suffit de vous rendre avec un compte administrateur à l'adresse : http://mon.moodle/admin/index.php, ou en passant par « Administration du site > Notifications ».

cron OK.jpg   cron pas OK.jpg
Le cron a bien été lancé
(Attention : la date indiquée concerne la recherche des mises à jour !)
   Le cron n'a pas été exécuté depuis au moins 24 heures, voire...
n'a jamais été lancé !

Voir aussi

Discussions sur les forums d'assistance Moodle (en anglais) :