Pasar al contenido principal
Alberto Permuy Leal

Menú de navegación

  • Home
  • Blog
  • Proyectos
  • Arsenal
  • Conciertos
  • Acerca de
  • Contacto

Ruta de navegación

  1. Inicio
  2. Blog de Alberto Permuy Leal

Moodle, logs y cómo salvar el culo...

Por Un veloz murci… (no verificado), 24 Julio, 2012

Ayer Lunes día 23 de Julio de 2012 fue uno de los días más jodidos desde que estoy trabajando en esta empresa. Estamos en plena "justificación", es decir: "sacar/imprimir/generar miles de informes de toda la actividad de los últimos 12 meses", y todo se necesita "ya".

El pasado Viernes día 20 me avisaron de que "para ayer" deberíamos tener listos los accesos y calificaciones de todos los alumnos que han cursado algún plan formativo con nosotros. Lo de todos los años: ir a Moodle, entrar en el curso, generar informe y asunto zanjado. Nada más lejos de la realidad!

Comienza el "marrón" con la operación descrita en el párrafo anterior y bueno, la verdad es que aunque suene raro, hasta parecía divertirme y todo! Que si un informe por aquí, que si lo guardo por allá, hasta que "0 registros" encontrados para el curso XXXYYYZZZ: "No puede ser!"  pensaba en voz baja. "Voy a generar de nuevo el informe", pero nada: 0 registros! Llamo a mi compañero y le comento el problema: "Yo genero los informes cuando termina el curso, pues 'el Moodle' está configurado para eliminar los registros después de 100 días de inactividad", responde. El cielo se vuelve negro y yo comienzo a plantearme seriamente abandonar el país de inmediato, dejarlo todo y comenzar una nueva vida en Cuba vendiendo postales en el Malecón. "Keep calm and carry on!".

"Copias de seguridad, eso es" vuelvo a repetir en voz baja. Descargo vía "scp" los últimos backups de los cursos en cuestión y los intento restaurar en mi máquina local. Imposible! Ni aumentando "timeouts" , ni "tuneando MySQL", nada, ni una sola operación de restauración se realizaba correctamente...Las 16:05. 35ºC en el estudio. No sabía qué hacer. Bajo a tomar algo frío, subo de nuevo al estudio y pienso "puedo descargar toda la bbdd e intentar recuperar los logs de acceso, luego los exporto a XLS y asunto arreglado". No fue tan fácil como pensaba, pero sí, lo logré. Es muy probable que a nadie le interese cómo lo he logrado pero voy a dejarlo escrito por aquí, por que es probable que algún día necesite volver a leer este post.

1.- Restaurar la bbdd.

mysql -u root -p bbdddepruebas copiabbdd.sql

2.- Ni se os ocurra trabajar con PhpMyAdmin o similar. En mi caso he usado MySQLWorkBench y no he tenido ni un problema. Hablamos de 2.100.000 registros en una sóla tabla.....

3.- Crear una "View" sólo con los registros del curso en cuestión. Sabéis que en Moodle todos los cursos tienen un "id" único, pues bien, yo he creado una "View" para cada curso del que había perdido los logs.

CREATE VIEW idcurso AS SELECT * FROM mdl_log WHERE course = 80

4.- Bien, ahora creamos una consulta sobre la vista pero con dos "INNER JOIN" sobre las tablas mdl_user(para obtener el nombre del usuario a partir del userid) y mdl_resource(para obtener el nombre del recurso/actividad a partir del resource_id).

SELECT
    FROM_UNIXTIME(x.time),
    x.ip,
    CONCAT(u.firstname, ' ', u.lastname) AS NombreAlumno,
    x.action as Accion,r.name as Informacion
FROM
    idcurso x
INNER JOIN mdl_user u ON x.userid = u.id
INNER JOIN mdl_resource r ON x.info = r.id
LIMIT 0 , 100000 

Pasteamos directamente la consulta en MySQLWorkbench, esperamos a que finalice la ejecución y listo! Ya podemos pulsar el botón exportar y generar el informe de acceso.


Así es como pasé el Lunes 23 de Julio de 2012, entre Moodle y sentencias SQL. Lo bueno: he entregado el trabajo a tiempo. Lo malo: era mi día libre.

Salud!

Quizá te interesen estos artículos...

Cuaderno de bitácora: migración abeancos.gal - Nota 1

Publicado el 16/06/2025

Como descargar música desde Spotify con docker en Linux

Publicado el 10/05/2025

Activar Wake On LAN (wol) al iniciar Debian 12

Publicado el 28/09/2024

Aviso legal 


Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.

Sígueme en Mastodon

Powered by Drupal