diff options
-rw-r--r-- | engine/lib/cache.php | 24 | ||||
-rw-r--r-- | engine/lib/database.php | 24 | ||||
-rw-r--r-- | engine/lib/entities.php | 14 |
3 files changed, 40 insertions, 22 deletions
diff --git a/engine/lib/cache.php b/engine/lib/cache.php index 399552785..7523a0a68 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -167,7 +167,7 @@ * * @var unknown_type */ - private static $__cache; + public static $__cache; /** * ID of a cache to use. @@ -385,4 +385,26 @@ } } } + + + /** + * A simple function that selects the default caching engine. + * + * This function provides a central way to get a cache for storing local variables. + * + * TODO: Do this better & allow plugin overrides. + * + * @param string $namespace Define which memory space to use. + */ + function select_default_memcache($namespace = "default") + { + // hook out to the world ? (can't if using as object cache) + + // if nothing then use shared memory cache. + + // TODO: Use memcache if available? + + return new ElggStaticVariableCache($namespace); + + } ?>
\ No newline at end of file diff --git a/engine/lib/database.php b/engine/lib/database.php index e9f3667f7..0e5b43106 100644 --- a/engine/lib/database.php +++ b/engine/lib/database.php @@ -23,7 +23,7 @@ function establish_db_link($dblinkname = "readwrite") {
// Get configuration, and globalise database link
- global $CONFIG, $dblink;
+ global $CONFIG, $dblink, $DB_QUERY_CACHE;
if (!isset($dblink)) {
$dblink = array();
@@ -54,7 +54,10 @@ throw new DatabaseException(sprintf(elgg_echo('DatabaseException:WrongCredentials'), $CONFIG->dbuser, $CONFIG->dbhost, $CONFIG->debug ? $CONFIG->dbpass : "****"));
if (!mysql_select_db($CONFIG->dbname, $dblink[$dblinkname]))
throw new DatabaseException(sprintf(elgg_echo('DatabaseException:NoConnect'), $CONFIG->dbname));
-
+ + // Set up cache + if (!$DB_QUERY_CACHE) + $DB_QUERY_CACHE = select_default_memcache('db_query_cache'); //array();
}
/**
@@ -158,7 +161,6 @@ $resultarray = array();
- if (!$DB_QUERY_CACHE) $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache'); //array(); if (isset($DB_QUERY_CACHE[$query])) { if ((isset($CONFIG->debug)) && ($CONFIG->debug==true)) error_log ("$query results returned from cache"); @@ -209,7 +211,6 @@ $dblink = get_db_link('read');
- if (!$DB_QUERY_CACHE) $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache'); //array(); if (isset($DB_QUERY_CACHE[$query])) { if ((isset($CONFIG->debug)) && ($CONFIG->debug==true)) error_log ("$query results returned from cache"); @@ -265,10 +266,7 @@ } // Invalidate query cache - if ($DB_QUERY_CACHE) - $DB_QUERY_CACHE->clear(); - else - $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache'); //array(); + if ($DB_QUERY_CACHE) $DB_QUERY_CACHE->clear(); if ((isset($CONFIG->debug)) && ($CONFIG->debug==true)) error_log("Query cache invalidated");
@@ -304,10 +302,7 @@ } // Invalidate query cache - if ($DB_QUERY_CACHE) - $DB_QUERY_CACHE->clear(); - else - $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache'); //array(); + if ($DB_QUERY_CACHE) $DB_QUERY_CACHE->clear(); if ((isset($CONFIG->debug)) && ($CONFIG->debug==true)) error_log("Query cache invalidated");
@@ -344,10 +339,7 @@ }
// Invalidate query cache - if ($DB_QUERY_CACHE) - $DB_QUERY_CACHE->clear(); - else - $DB_QUERY_CACHE = new ElggStaticVariableCache('db_query_cache'); //array(); + if ($DB_QUERY_CACHE) $DB_QUERY_CACHE->clear(); if ((isset($CONFIG->debug)) && ($CONFIG->debug==true)) error_log("Query cache invalidated"); diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 1daa46a00..d1c4ba3eb 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -921,7 +921,7 @@ global $ENTITY_CACHE; if (!$ENTITY_CACHE) - $ENTITY_CACHE = new ElggStaticVariableCache('entity_cache'); // TODO: Replace with memcache? + $ENTITY_CACHE = select_default_memcache('entity_cache'); // TODO: Replace with memcache? } /** @@ -1013,7 +1013,8 @@ if ($result) { - if (!$SUBTYPE_CACHE) $SUBTYPE_CACHE = new ElggStaticVariableCache('subtype_cache'); + if (!$SUBTYPE_CACHE) + $SUBTYPE_CACHE = select_default_memcache('subtype_cache'); $SUBTYPE_CACHE[$result->id] = $result; return $result->id; @@ -1043,7 +1044,8 @@ $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where id=$subtype_id"); if ($result) { - if (!$SUBTYPE_CACHE) $SUBTYPE_CACHE = new ElggStaticVariableCache('subtype_cache'); + if (!$SUBTYPE_CACHE) + $SUBTYPE_CACHE = select_default_memcache('subtype_cache'); $SUBTYPE_CACHE[$subtype_id] = $result; return $result->subtype; @@ -1071,7 +1073,8 @@ $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where type='$type' and subtype='$subtype'"); if ($result) { - if (!$SUBTYPE_CACHE) $SUBTYPE_CACHE = new ElggStaticVariableCache('subtype_cache'); + if (!$SUBTYPE_CACHE) + $SUBTYPE_CACHE = select_default_memcache('subtype_cache'); $SUBTYPE_CACHE[$result->id] = $result; return $result->class; @@ -1100,7 +1103,8 @@ $result = get_data_row("SELECT * from {$CONFIG->dbprefix}entity_subtypes where id=$subtype_id"); if ($result) { - if (!$SUBTYPE_CACHE) $SUBTYPE_CACHE = new ElggStaticVariableCache('subtype_cache'); + if (!$SUBTYPE_CACHE) + $SUBTYPE_CACHE = select_default_memcache('subtype_cache'); $SUBTYPE_CACHE[$subtype_id] = $result; return $result->class; |