Cache context lookup per page for performance

This commit is contained in:
moodler 2006-08-13 13:28:01 +00:00
parent b63ec9db78
commit e5605780cf

View file

@ -805,14 +805,24 @@ function create_context($level, $instanceid) {
* @param $instance * @param $instance
*/ */
function get_context_instance($level, $instance=SITEID) { function get_context_instance($level, $instance=SITEID) {
// echo "getting level $level instance $instance";
// XXX TODO Add caching here static $contexts; // Cache context lookups per page for performance
if (!isset($contexts)) {
$contexts = array();
}
if (isset($contexts[$level][$instance])) { // Already cached
return $contexts[$level][$instance];
}
if (!$context = get_record('context', 'level', $level, 'instanceid', $instance)) { if (!$context = get_record('context', 'level', $level, 'instanceid', $instance)) {
//echo "creating ...";
create_context($level, $instance); create_context($level, $instance);
$context = get_record('context', 'level', $level, 'instanceid', $instance); $context = get_record('context', 'level', $level, 'instanceid', $instance);
} }
$contexts[$level][$instance] = $context; // Cache it for later
return $context; return $context;
} }