From 0fcad934b65950c605ebff9c7557a533cbb2d07d Mon Sep 17 00:00:00 2001 From: nfreear Date: Fri, 14 Sep 2007 15:48:19 +0000 Subject: [PATCH] MDL-11160 'Live cron runs out of memory, before "core" ...' - tailored get_recordset_.. fix for 1.8 branch. --- admin/cron.php | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/admin/cron.php b/admin/cron.php index d509fda507e..16c65f77744 100644 --- a/admin/cron.php +++ b/admin/cron.php @@ -150,13 +150,19 @@ mtrace('Removing expired enrolments ...', ''); // See MDL-8785 $timenow = time(); - if ($oldenrolments = get_records_select('role_assignments', "timeend > 0 AND timeend < '$timenow'")) { - mtrace(count($oldenrolments).' to delete'); - foreach ($oldenrolments as $oldenrolment) { - if (role_unassign($oldenrolment->roleid, $oldenrolment->userid, 0, $oldenrolment->contextid)) { - mtrace("Deleted expired role assignment $oldenrolment->roleid for user $oldenrolment->userid from context $oldenrolment->contextid"); - } - } + $somefound = false; + //The preferred way saves memory, dmllib.php + $rs_enrol = get_recordset_select('role_assignments', + 'timeend > 0 AND timeend < '.$timenow, + $sort='', + 'roleid, userid, contextid'); + mtrace($rs_enrol->RecordCount().' to delete'); + while ($oldenrolment = rs_fetch_next_record($rs_enrol)) { + role_unassign($oldenrolment->roleid, $oldenrolment->userid, 0, $oldenrolment->contextid); + $somefound = true; + } + rs_close($rs_enrol); + if($somefound) { mtrace('Done'); } else { mtrace('none found');