Cron Job: Deleting Old Quizzes

Cron Job: Deleting Old Quizzes

by John Ivan Abella -
Number of replies: 4

We made a custom plugin so that we can delete old quizzes (1-2 months old). However it takes long even for just 1 quiz. The attachment displays the runtime comparison when deleting a quiz in the actual interface with moodle and in the custom plugin.We have created a custom plugin to delete old quizzes (1-2 months old). However, it is taking a long time to delete even just one quiz. The attachment shows the comparison of the runtime when deleting a quiz in the standard Moodle interface and in our custom plugin. The problem is there's a thousand of quizzes and it will take long to delete all of them. We have developed a custom plugin to delete quizzes that are 1-2 months old. However, it is taking a long time to delete even just one quiz. The attachment provides a comparison of the runtime when deleting a quiz using the standard Moodle interface versus our custom plugin. The issue is that there are thousands of quizzes, and it will take a significant amount of time to delete all of them.

Attachment test.png
Average of ratings: -
In reply to John Ivan Abella

Re: Cron Job: Deleting Old Quizzes

by Howard Miller -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
Is there a question, here? We can't debug your code without seeing your code and, even then, it's unlikely somebody is going to do that.

XDebug profiling is generally your friend for this sort of thing. Also, check your SQL queries - are you querying huge tables and missing indexes? 'Explain' is your friend in that case.
In reply to Howard Miller

Re: Cron Job: Deleting Old Quizzes

by John Ivan Abella -
Apologize for my initial writing. That was weird.
 
To give a bit more context, we developed a custom plugin called Quiz Builder for review purposes. Then, we added a scheduled task to automate the deletion of quizzes that are 1-2 months old because manually deleting them through the standard Moodle interface was too time-consuming. However, the scheduled task still takes an unexpectedly long time to delete even a single quiz, and we have thousands to delete.

Here is a snippet of the relevant part of our code:
image.png
 
If you or anyone else has more insights into how we might optimize this process or if there are specific things we should be looking out for, I'd greatly appreciate it. Thank you
In reply to John Ivan Abella

Re: Cron Job: Deleting Old Quizzes

by Howard Miller -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
Try,

course_delete_module($quiz->quizmoduleid, true);
Average of ratings: Useful (2)
In reply to Howard Miller

Re: Cron Job: Deleting Old Quizzes

by John Ivan Abella -
Thank you, Howard. This fixed the issue. It deletes the quiz in less than a second now. Hats off to you.