https://github.com/YorkvilleEducationCompany/RealTimeMonitoringService
Hello everyone! I have a super crazy plugin system I've been working on for a few months... I think the Moodle community at large is going to love what this solves.
Ever try to run a big report but it crushes your CPU and Moodle dies?
Now you can run those complex queries in a manner that won't break your Moodle with near real time results!
But how, you say?
I built a QUE CACHE system. At the start of a batch, it scans every single course in your Moodle. Then, it begins processing those on a cron job set to every 1 minute interval. I've tested 50 courses at a time on production, it goes very smoothly.
But if the previous script has not finished processing, the system remains locked, and will simply die(); until the next minute where it will check again.
The first module ever built for RTMS was "Autograde overdue quizzes to a 0", some instructors would miss assigning the zero as they were accustomed to using the grade tool.
So how do we scan for missed quizzes? Every single course, every single quiz, every single student.
What's coming Next?
This year we're going to build a Twilio/Sendgrid integration that will be able to message students as such:
"Dear greg, your Final Exam is due in 3 hours and has not been submitted"
"Dear Greg, your Final Exam is now overdue and has automatically been graded with a 0 -- please contact your instructor if you need additional time"
"Dear Gregs Teacher, Greg missed his final exam and has automatically been given a 0, please contact Greg right away"
Imagine being able to have all this data sending out in near real time to your students, without fear of your entire Moodle install being burnt down.
The code right now works, but needs some love in the settings. You can feel free to experiment with it for now, more updates are soon to follow. Stay tuned here and let me know your thoughts!
Cheers,