El proceso "cron" de Moodle es un script PHP (parte de la instalación base) que debe ser ejecutado a intervalos regulares. Este script lleva a cabo diferentes tareas programadas en diferentes intervalos de tiempo (enviar mails, actualizar reportes de Moodle, RSS feeds, completitud de actividades y notificaciones de mensajes en foros, entre otras). Es importante que este proceso se configure correctamente, de lo contrario el sitio Moodle no funcionará de forma adecuada.

En sistemas operativos de la familia Unix (Linux, *BSD), este script se programa desde cron, por ejemplo en el crontab del usuario con el que corre Apache (www-data en Debian y derivados). Debido a que diferentes tareas tienen intervalos de tiempo diferentes, no todas se ejecutan cada vez que se dispara el script cron.php desde cron.



Un administrador del sitio puede programar tareas de forma precisa desde el menú "Administration > Site administration > Server > Scheduled tasks" en el sitio. Pero también existe la herramienta de línea de comandos schedule_task.php la cual se encuentra dentro del directorio admin/tool/task/cli:

root@moodle:~# su www-data -c '/usr/bin/php /var/www/moodle/admin/tool/task/cli/schedule_task.php'
Scheduled cron tasks.

Options:
--execute=\\some\\task  Execute scheduled task manually
--list                List all scheduled tasks
-h, --help            Print out this help

Example:
$sudo -u www-data /usr/bin/php admin/tool/task/cli/scheduled_task.php --execute=\\core\\task\\session_cleanup_task

Tal como se observa en la ayuda, esta herramienta permite listar y ejecutar tareas programadas.

Cómo listar las tareas programadas de Moodle

Para listar todas las tareas programadas, junto con sus respectivos intervalos (utiliza la misma sintaxis que cron) y fechas estimadas para las próximas ejecuciones de cada una, utilizar el comando --list.

php /var/www/moodle/admin/tool/task/cli/schedule_task.php --list

Por ejemplo:

root@moodle:~# su www-data -c '/usr/bin/php /var/www/moodle/admin/tool/task/cli/schedule_task.php --list'
== List of scheduled tasks (https://moodle.linuxito.com) ==
\logstore_legacy\task\cleanup_task                 * 5 * * * *       martes, 10 de mayo de 2016, 05:02
\logstore_standard\task\cleanup_task               * 4 * * * *       martes, 10 de mayo de 2016, 04:01
\core\task\automated_backup_task                   50 * * * * *      lunes, 9 de mayo de 2016, 09:50
\core\task\backup_cleanup_task                     10 * * * * *      lunes, 9 de mayo de 2016, 10:10
\core\task\badges_cron_task                        */5 * * * * *     lunes, 9 de mayo de 2016, 09:35
\core\task\blog_cron_task                          * * * * * *       ASAP
\core\task\cache_cleanup_task                      30 * * * * *      lunes, 9 de mayo de 2016, 10:30
\core\task\cache_cron_task                         50 * * * * *      lunes, 9 de mayo de 2016, 09:50
\core\task\calendar_cron_task                      * * * * * *       ASAP
\core\task\check_for_updates_task                  0 */2 * * * *     lunes, 9 de mayo de 2016, 10:00
\core\task\completion_cron_task                    * * * * * *       ASAP
\core\task\context_cleanup_task                    25 * * * * *      lunes, 9 de mayo de 2016, 10:25
\core\task\create_contexts_task                    0 0 * * * *       martes, 10 de mayo de 2016, 00:00
\core\task\delete_incomplete_users_task            5 * * * * *       lunes, 9 de mayo de 2016, 10:05
\core\task\delete_unconfirmed_users_task           0 * * * * *       lunes, 9 de mayo de 2016, 10:00
\core\task\events_cron_task                        * * * * * *       ASAP
\core\task\file_temp_cleanup_task                  55 */6 * * * *    lunes, 9 de mayo de 2016, 12:55
\core\task\file_trash_cleanup_task                 55 */6 * * * *    lunes, 9 de mayo de 2016, 12:55
\core\task\grade_cron_task                         * * * * * *       ASAP
\core\task\legacy_plugin_cron_task                 * * * * * *       ASAP
\core\task\messaging_cleanup_task                  35 * * * * *      lunes, 9 de mayo de 2016, 09:35
\core\task\password_reset_cleanup_task             0 */6 * * * *     lunes, 9 de mayo de 2016, 12:00
\core\task\plagiarism_cron_task                    * * * * * *       ASAP
\core\task\portfolio_cron_task                     * * * * * *       ASAP
\core\task\question_cron_task                      * * * * * *       ASAP
\core\task\registration_cron_task                  0 4 * * * *       martes, 10 de mayo de 2016, 04:00
\core\task\send_failed_login_notifications_task    * * * * * *       ASAP
\core\task\send_new_user_passwords_task            * * * * * *       ASAP
\core\task\session_cleanup_task                    * * * * * *       ASAP
\core\task\stats_cron_task                         0 * * * * *       lunes, 9 de mayo de 2016, 10:00
\core\task\tag_cron_task                           20 * * * * *      lunes, 9 de mayo de 2016, 10:20

Las fechas para las próximas ejecuciones son estimadas, no precisas, porque dependen del período con el cual se ejecuta el script cron.php. Si éste se ejecuta con un período mayor a 1 minuto (por ejemplo cada 10 minutos), las tareas programadas cuya próxima ejecución no coincida con un ciclo serán ejecutadas en el ciclo inmediato siguiente. En este caso es común ver la sigla ASAP (as soon as possible, "lo antes posible" en inglés) en la tercer columna para aquellas tareas que se deben ejecutar una vez por minuto (* * * * * *).

Cómo ejecutar una tarea programada de forma manual

Si se necesita correr manualmente una tarea programada, se debe utilizar el comando --execute con la siguiente sintaxis:

php /var/www/moodle/admin/tool/task/cli/schedule_task.php --execute=TAREA

Por ejemplo:

root@moodle:~# su www-data -c '/usr/bin/php /var/www/moodle/admin/tool/task/cli/schedule_task.php --execute=\\core\\task\\session_cleanup_task'
Scheduled task: Limpiar sesiones antiguas
... used 86 dbqueries
... used 0.23355317115784 seconds
Task completed.

El nombre de la tarea se obtiene de la salida del comando --list. Tal como se observa, es necesario utilizar barras invertidas dobles.

Referencias

Scheduled tasks - MoodleDocs

Cron - MoodleDocs

man cron
man crontab


Tal vez pueda interesarte


Compartí este artículo