tracciare tempo di permanenza in un corso

Re: tracciare tempo di permanenza in un corso

di Matteo Scaramuccia -
Numero di risposte: 0

Ciao Vieri,
l'accumularsi del session_time in total_time avviene solo ed esclusivamente quando si chiama LMSFinish() per cui dai tuoi log la tua logica risulta - teoricamente - OK: eliminerei solo l'ultima LMSCommit() prima della LMSFinish() perché qui è ridondante, così da ridurre il carico al server e migliorare, anche se di poco, la reattività del tuo contenuto.

Quanto hai letto in rete però è altrettanto vero: il risultato finale dipende molto dalle condizioni al contorno (rete, browser, etc etc) perché se per caso non si riesce a fare la call a LMSFinish() si perde tutto il tempo accumulato in quella "sessione" di lavoro (da cui i tuoi numeri così piccoli e lontani dai valori attesi).
Tipicamente, c'è una componente di dipendenza dal browser per scegliere il momento in cui fare la chiamata, spesso alla "close" della finestra, momento in cui non tutti i browser garantiscono l'esecuzione del codice. Per essere certo della chiamata, dovresti introdurre nei tuoi corsi un esplicito consenso alla chiusura della "sessione di tracciamento", oltre all'eventuale attuale - cioè, supposta da me - logica alla chiusura della finestra, così che se l'utente schiaccia il pulsante sei quasi certo che andrà a buon fine e in quel caso disabiliterai la seconda call, quella dell'"abbandono della finestra" - che darebbe errore perchè ormai hai chiuso la "sessione di tracciamento".
Le problematiche di rete (es.: disconnessione rete mobile) sono invece più difficili da trattare in quanto non puoi sapere se di lì a breve la rete tornerà: puoi solo provare a ripetere la call in caso di insuccesso, diciamo dopo 500ms.

Nota: ho da tempo delle idee sul modulo SCORM in Moodle per minimizzare questa debolezza, intrinseca in SCORM, ma al momento non ho ancora trovato il tempo libero per codificarle opportunamente e sostenerne anche il tempo richiesto per la sottomissione al main stream.

HTH,
Matteo