Academia Deltamontero · Documentación
Desarrollolocal_deltamodules

Tareas programadas

Tareas programadas y ad hoc de local_deltamodules y cómo corre el cron de Moodle en el contenedor moodle-cron.

Tareas (db/tasks.php)

ClaseNombre visibleProgramaciónQué hace
local_deltamodules\task\review_reminderCadena task_reviewreminderDía 1 de cada mes, 08:00Avisa a Talento Humano (delta_jefaturas) los módulos con revisión anual vencida, por vencer (menos de 60 días) o sin revisión. Ver Revisión anual.
local_deltamodules\task\client_expiryClientes: desactivar las empresas con el acceso vencidoTodos los días, 01:30clients::expire(): desactiva las empresas cuya fecha de acceso pasó y suspende a sus usuarios.
local_deltamodules\task\send_mailCorreo: enviar los correos en colaCada minutomailer::process(): envía dentro de los límites, reintenta y limpia el registro.
local_deltamodules\task\mail_remindersCorreo: recordatorio de módulos pendientesLunes, 09:00mailer::reminders(): recordatorio a quien no entra hace 14 días a módulos sin terminar.

Todas tienen blocking = 0. La hora es la de la zona del sitio (America/Guayaquil, fijada por moodle-config.sh). Se pueden ajustar desde Administración del sitio → Servidor → Tareas programadas (solo el super administrador).

Tarea ad hoc

ClaseCuándo se encolaQué hace
local_deltamodules\task\delete_client_usersclients::delete() al eliminar una empresa clienteBorra las cuentas recibidas en custom_data->userids (ya suspendidas), salvo super administradores y quien pertenezca a otra empresa cli_* o a una cohorte cargo_*.

Cron en el contenedor

El cron de Moodle no corre en el contenedor del sitio sino en moodle-cron (misma imagen), con cron-entrypoint.sh:

  1. Genera el mismo config.php que el sitio (write-config.sh).
  2. Espera a que exista la tabla mdl_config (instalación terminada).
  3. Ejecuta admin/cli/cron.php cada 60 segundos. Si termina bien y la salida no contiene "upgrade pending" ni "cron execution suspended", escribe la hora en /tmp/cron-last-ok (lo usa el healthcheck de docker-compose.yml).
  4. Nunca termina el contenedor: ante un error lo escribe en el registro y sigue reintentando. Con 10 fallos seguidos por "upgrade pending" advierte que la imagen del cron no coincide con la del sitio.

moodle-config.sh fija cronclionly = 1 (el cron solo se ejecuta por línea de comandos). Si el cron no corre hace más de 15 minutos, el super administrador ve un aviso dentro de Moodle (hook_callbacks::admin_alerts).

El contenedor moodle-cron tiene su propia copia del código (no comparte /var/www/html con el sitio). Si en un entorno local se copian archivos a mano al contenedor del sitio, hay que copiarlos también al del cron. Ver Guía de cambios.

En esta página