Commit b3e4fbc0 authored by Adam Olley's avatar Adam Olley
Browse files

MDL-58160 coursecat: Use set_many to populate category cache

When the course category cache needs to be repopulated, two entries are added
to the cache for each category. In core this is currently done in a for-loop,
resulting in N set calls to the cache (where N is twice the number of
categories in Moodle).

This change switches that code to using a single set_many cache call instead,
which makes this an O(1) operation instead of O(N).

For a site with say, 1000 categories, this results in only 1 set call to the
cachestore instead of 2000.
parent 3c45d26f
......@@ -626,9 +626,7 @@ class coursecat implements renderable, cacheable_object, IteratorAggregate {
}
// We must add countall to all in case it was the requested ID.
$all['countall'] = $count;
foreach ($all as $key => $children) {
$coursecattreecache->set($key, $children);
}
$coursecattreecache->set_many($all);
if (array_key_exists($id, $all)) {
return $all[$id];
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment