From a9881c17507c415124e1b1814f5a313a06d03280 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Mon, 5 Aug 2013 10:13:19 +1000 Subject: [PATCH] MDL-34785 performance improvement with big list of courses --- blocks/course_overview/locallib.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/blocks/course_overview/locallib.php b/blocks/course_overview/locallib.php index bc159de98c6..71267b63323 100644 --- a/blocks/course_overview/locallib.php +++ b/blocks/course_overview/locallib.php @@ -31,8 +31,17 @@ function block_course_overview_get_overviews($courses) { $htmlarray = array(); if ($modules = get_plugin_list_with_function('mod', 'print_overview')) { - foreach ($modules as $fname) { - $fname($courses,$htmlarray); + // Split courses list into batches with no more than MAX_MODINFO_CACHE_SIZE courses in one batch. + // Otherwise we exceed the cache limit in get_fast_modinfo() and rebuild it too often. + if (defined('MAX_MODINFO_CACHE_SIZE') && MAX_MODINFO_CACHE_SIZE > 0 && count($courses) > MAX_MODINFO_CACHE_SIZE) { + $batches = array_chunk($courses, MAX_MODINFO_CACHE_SIZE, true); + } else { + $batches = array($courses); + } + foreach ($batches as $courses) { + foreach ($modules as $fname) { + $fname($courses, $htmlarray); + } } } return $htmlarray; -- 2.43.0