Granted the title of this posting may not be very accurate, so here are the details ... as I understand the issue.
First, entity is using load balancing (LB) that goes to 4 nodes (02,03,04,05) and those are running CentOS 7 with Moodle 3.4.x (not highest) ... MySQL on a dedicated SQL server, PHP cli shows 7.2.8 and each server setup to use php-fpm. Hope that's a good enough description ...
The problem ... many of the SCORMS (1.2 versions) are lengthy and take time to complete - example of one ... 96 slides (all have some .mp3 audio), 3 slides have videos with approx 4min, 4min, and 7min playing time. At the end there is a quiz and user must make 80% to pass.
What's happening ... users get to the very end and when they click the 'final button', it spins forever, or times out.
In watching realtime logs for scorm activity one could see when user moved to a different slide ... no issues with navigating ... it's only the very end ... where one sees
a POST to /mod/scorm/datamodel.php that I think dumps the data the SCORM has been collecting to the Moodle and that's when it times out ... that 'spinning forever'. Pretty frustrating for users that have spent what might be 1 hour in a SCORM and to get to the very end ... fail. :\
Have found a setting that was not turned on for 'auto-commit' ... which, in it's description, says it will, from to time, dump to Moodle. In looking at logs that setting does appear to be executing.
When looking at the DB mdl_scorms table, there is an autocommit column for all SCORMS that appears to be set for '0' still.
So does changing that setting in config of SCORM's set a global? Is that not reflected in the settings of each SCORM? Do I need to go back to each individual SCORM and set that? If so, there doesn't seem to be a setting for that in each SCORM setup via admin/set up of a SCORM module.
Am hoping that when/if a user reaches the end of a SCORM and they loose connectiviity (for some reason yet to be discovered), most of the data for participation has been saved to the DB.
Granted ... can't control their connectivity ... the netcheck for sessions is running frequently enough I think but can't not find a way to increase the frequency of checking ... or if that's a good idea or not.
A 'bonus question' ... observation ... running the task for scorm individually doesn't appear to be doing anything ... run from either cli or the 'Run Now' button in the Moodle Admin UI. What is it supposed to do?
Thanks in advance,
2) Auto-commit - unlikely to help much in this case - many SCORM packages aren't set to report any data back to the LMS until the final slide (which I suspect is the case in your package.)
3) Did you find that auto-commit setting under "admin > plugins > activites > SCORM - and did it have a title of "default settings"? - if so then it would be changing the default value for any new SCORM packages you add to your course.
4) Task/Cron for SCORM does 2 things:
- You can add a SCORM package in quite a few different ways see these posts if interested: (1, 2) If you have set a SCORM package to update every day, the task will update those SCORM packages as configured.
- Clean up old AICC HACP sessions - SCORM supports AICC HACP which has implements it's own session handling - if AICC HACP is enabled the task will clean up the old aicc sessions.a
Thanks, Dan. Appreciate it.
Do have debugger for SCORM on ... forgot to ask about that also... can there be multiple admins designated in the box for who sees?
It's so sporadic, I, myself, have never seen the issue ... and the fact this is load balanced, a user could have the issue on just one of the nodes and not on all 4. :|
Will have to ask the person who builds the 1.2 compat SCORM's if they can include autocomits.
So the setting for 'autocomit' would be on only for *NEW* courses that contained SCORM's ... hmmm, looks like some direct DB for a couple of those course/SCORM's to see if it helps any.
Hmmmm the task/cron job ... no wonder it shows nothing ... no AICC HACP contained therein. But if that has it's own auto-commits might be the way they need to go. Unfortunately, this is their 'prime time' right now and don't have the time to explore that as well. They do have a test setup LB, one node, but it's not accessible from the outside world.
Referenced links? 1 and 2? URL's please.
Thanks, again! Ken
fixed the links in the post above.
I'm pretty sure scorm debug mask accepts commas to allow multiple users to be set but it's been a while since I've used that setting so you might need to test it out and see.
Thanks for the links.
Yep ... very difficult to diagnose if one cannot reproduce ... backed up one course that had one of those SCORM's in it, restored to another server ... OS and versions of everything very close. Did that cause the live logs on a node scroll so fast one can't really see anything!!! And even tail -f on logs with a grep for IP address and anything that had 'scorm' in the URL didn't lead to any clue ... might have picked an ip and user behind that ip wasn't having any issues.
Course over there had no issues - but wasn't a node in an LB system either.
Will continue to dig however.
'spirit of sharing', Ken
Follow Up to own posting ... how sick is that!!!
Thought I'd share what have learned so far ... and a method to test the SCORM with debugging on ... NOT in the LMS (however).
Specifics may apply so:
The SCORM am investigating ....
Created using Storyline 360
ADL SCORM 1.2
Community discussion about a bug related to autocomit
A page tha describes using SCORM cloud.
Note it does say that the URL method ... ie, linking that in the Moodle,
will not share the data back to the Moodle. But, is that important?
Just interested in passing score to be able to move on.
'spirit of sharing', Ken
The autocommit in Moodle's scorm activity settings just does a save on a regular basis. It doesn't change how or what data is being saved or parse it out, all of that is up to the Storyline content.
What I have noticed in many of these packages (we have used Articulate Presenter, Storyline, and Lectora for development) is that they open a connection with the API and they set data throughout, but the commit is only called with the content is opened, completed, or closed. So it is like they opened a file, made changes for a few hours, but never actually saved those changes. The autocommit is essentially an autosave on a regular basis so if you lose connection, timeout, or whatever, you don't lose all of that data.
Another thing that seems to come up is that during a quiz or exam inside scorm content, data isn't posted between questions but is submitted in bulk once the quiz is finished. So if you have content with a large number of activities, knowledge checks, or quizzes, this can be troublesome.
I have pushed many of our instructional designers to break things up into modules/chapters and move major exams into Moodle itself if possible because of things like this.
"Another thing that seems to come up is that during a quiz or exam inside scorm content, data isn't posted between questions but is submitted in bulk once the quiz is finished. So if you have content with a large number of activities, knowledge checks, or quizzes, this can be troublesome."
And, have suggested to course creators on the troubled system exactly what you have suggested.
And agree ... it is a 'push'. :|
Guess, they will have to make up their minds ... SCORM (which really does enhance the experience), but putzzes frequently (adds to support issues) ... or 'functional' ... known to work ... the Quiz in Moodle.
'spirit of sharing', Ken