Cron

De MoodleDocs
Revisión del 01:07 5 jul 2014 de German Valero (discusión | contribs.) (tidy up (FINAL))

El proceso 'cron' de Moodle es un script PHP (parte de la instalación estándar de Moodle) que debe correrse regularmente en el fondo. El script cron de Moodle corre diferentes tareas a diferentes intervalos agendados.

IMPORTANTE: No se salte la configuración del proceso de cron en su servidor de Moodle. Su sitio no funcionará correctamente sin él.

Un programa especial (típicamente llamado - lo que no es de sorprender - 'cron') es usado para correr el script de cron de Moodle a intervalos regulares. El script de cron de Moodle corre tareas que incluyen el mandar correos, actualizar reportes de Moodle, canales RSS, completado de actividades, publicación de mensajes en foros y otras tareas. Dado que las diferentes tareas tienen diferentes horarios agendados, no todas las tareas correrán en Moodle cuando se dispare el script de cron.

El programa cron (que corre el script de Moodle) es una parte del núcleo de los sistemas basados en Unix (incluyendo Linux y OSX) que se usa para correr todos los tipos de servicios dependientes del tiempo (hora). En Windows, la solución más simple es crear una tarea en el Administrador de tareas de windows ( Windows Task Scheduler ) y configurarla para que corra a intervalos regulares. En alojamientos compartidos, Usted debería de encontrar la documentación (o pedir soporte) acerca de cómo se configura cron.

Esencialmente, la tarea involucra el añadir un solo comando (instrucción/órden) a la lista de actividades de cron en su sistema. En sistemas basados en Unix, esta lista es un archivo llamado 'crontab' que todos los usuarios tienen.

Discusión general

Vea las secciones más adelante para su tipo de servidor; ésta sección contiene un poco de información general introductoria.

Esencialmente hay dos pasos para implementar cron:

  1. identificar el comando correcto a correr
  2. encontrar el lugar correcto en su sistema para poner el comando

Elaboración del comando cron de Moodle

Moodle tiene dos diferentes formas para desplegar cron que usan diferentes scripts dentro de la instalación de Moodle. Éstos son como sigue...

  1. El script CLI (command line interpreter = intérprete de línea de comando). Éste estará en la ruta
    /ruta/hacia/moodle/admin/cli/cron.php
    Si tiene dudas, éste es el script correcto para utilizar. Éste necesita correrse por un programa 'PHP CLI' en su computadora. Así es que, el comando final puede parecerse a algo similar a
    /usr/bin/php /ruta/hacia/moodle/admin/cli/cron.php
    Usted puede (y debería de) intentar ésto en su línea de comando para ver si funciona.
  1. El script basado en web. Éste necesita correr desde un navegador web y estará accesible mediante una URL web parecida a http://su.sitio.moodle/admin/cron.php. Usted puede encontrar un navegador web basado en línea de comando (por ejemplo, wget) por lo que el comando final podría parecerse a
    /usr/bin/wget http://su.sitio.moodle/admin/cron.php
    Ésto tiene la ventaja de que se puede correr desde *cualquier sitio*. Si Usted no puede lograr que cron funcione en su computadora, puede correrlo en otro sitio.

Encontrando el lugar correcto para poner el comando

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.

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.

Example... installing cron on Ubuntu/Debian Linux. Assuming logged in as root..

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

$ crontab -u www-data -e

This will open an editor window. To run the cli cron script every 1 minute, add the line:

*/1 * * * * /usr/bin/php  /path/to/moodle/admin/cli/cron.php >/dev/null

NOTE: the final >/dev/null sends all the output to the 'bin' and stops you getting an email every 1 minute.

Configuración de cron en su sistema

Elija la información para su tipo de servidor:

Aquí hay más instrucciones para hosts específicos (por favor revise que estén actualizados):

Uso de servicios cron de terceros

Besides using cron hosted on your own server, you may use third party cron service (usually called webcron):

  • EasyCron - A webcron service provider that eliminates the need of crontab or other task schedulers to set cron job.

Configuraciones de cron en Moodle

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

  • Configuraciones de cron - Contraseña y configuraciones de CLI (Command Line Interfase= Interfase por Línea de Comando) ) de los procesos cron de Moodle

Cron remoto

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.

Cron para múltiples servidores Moodle

  • Si ambos servidores son servidores web, y en conjunto sirven solamente a una instancia de Moodle (en una especie de cluster), entonces solamente un servidor debería de correr el trabajo de cron.
  • Si dos servidores corren diferentes instancias de Moodle, entonces cada instancia necesita un trabajo de cron. (Hasta un sencillo servidor Apache puede correr diferentes instancias de Moodle en dominios diferentes al usar su capacidad de hosts virtuales (https://httpd.apache.org/docs/2.2/vhosts/index.html.)

Moodle 2.7

¡Nueva característica
en Moodle 2.7!

Cron en Moodle 2.7+

Cron ha recibido una actualización principal y ahora tiene soporte tanto para tareas agendadas y ad-hoc - MDL-25499. Los beneficios de estos cambios son:

  • La agenda para cada tarea puede configurarse por el administrador. Vea Tareas agendadas
  • Las tareas pueden correr en paralelo
  • Los procesos de Cron usan bloqueo para evitar que la misma tarea se corra al mismo tiempo por diferentes procesos

Un resultado de esto es que cada cron se puede correr mucho más frecuentemente, lo que significa (por ejemplo) que las publicaciones de foro pueden enviarse más pronto. Los administradores pueden mantener al Cron corriendo con la misma agenda de antes, pero se les recomienda encarecidamente que aumenten la frecuencia de corrida de cron a por lo menos una vez por minuto.

Nota: Pendiente de Traducir. ¡Anímese a traducir esta página!.     ( y otras páginas pendientes)

Depuración de tareas del sistema agendadas (Debugging Scheduled Tasks)

Sometimes, a particular cron task may not be working correctly. In Moodle versions before 2.7 - any cron task that was throwing exceptions would prevent the rest of cron from running. The only way to monitor if cron was completing each time, was to add some automated checking of the output of running cron (e.g. searching for the string "Cron completed at ").

Moodle 2.7

In Moodle 2.7 and later, a single failing scheduled task will not prevent the remaining tasks from completing. When any single scheduled task fails, it is marked as a failure, and scheduled to be reattempted. If the task keeps failing, the next scheduled time will be backed off until it is attempted at most once every 24 hours. But checking the Tareas agendadas admin page, you can see if any task is currently failing (it will have a non-zero fail delay - which is the number of seconds to wait before reattempting a failed task). A simple way to debug a failing task, is to run it immediately using the ejecutor de tareas agendadas por interfaz por línea de comando (cli scheduled task runner) and monitor the output.

Vea también

Using Moodle forum discussions: