]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11160, Cron exhausts memory on "Removing expired enrolments ..." - changing neste...
authornfreear <nfreear>
Thu, 13 Sep 2007 09:13:00 +0000 (09:13 +0000)
committernfreear <nfreear>
Thu, 13 Sep 2007 09:13:00 +0000 (09:13 +0000)
admin/cron.php

index 9ba820b03ebb13701c7cde89ed96ec9266c47c11..d001e2e8075883eead3b8676d4a6c7225036abb4 100644 (file)
     mtrace('Removing expired enrolments ...', '');     // See MDL-8785
     $timenow = time();
     $somefound = false;
+    // The preferred way saves memory, dmllib.php
     // find courses where limited enrolment is enabled
-    if($limitedcourses = get_records_select('course', 'enrolperiod > 0')) {
-        foreach($limitedcourses as $course) {
-            $context = get_context_instance(CONTEXT_COURSE, $course->id);
-            if ($oldenrolments = get_records_select('role_assignments', 'timeend > 0 AND timeend < ' . $timenow . ' AND contextid = ' . $context->id)) {
-                foreach ($oldenrolments as $oldenrolment) {
-                    role_unassign($oldenrolment->roleid, $oldenrolment->userid, 0, $oldenrolment->contextid);
-                    $somefound = true;
-                }
-            }
-        }
+    global $CFG;
+    $rs_enrol = get_recordset_sql("SELECT ra.roleid, ra.userid, ra.contextid
+        FROM {$CFG->prefix}course c
+        INNER JOIN {$CFG->prefix}context cx ON cx.instanceid = c.id
+        INNER JOIN {$CFG->prefix}role_assignments ra ON ra.contextid = cx.id
+        WHERE cx.contextlevel = '".CONTEXT_COURSE."'
+        AND ra.timeend > 0
+        AND ra.timeend < '$timenow'
+        AND c.enrolperiod > 0
+        ");
+    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 {
         echo "</xmp>";
     }
 
-?>
+?>
\ No newline at end of file