diff options
-rw-r--r-- | engine/lib/cache.php | 9 | ||||
-rw-r--r-- | engine/lib/memcache.php | 25 |
2 files changed, 27 insertions, 7 deletions
diff --git a/engine/lib/cache.php b/engine/lib/cache.php index 0363f501b..23f3c302b 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -450,13 +450,8 @@ // TODO : hook out to the world ? (can't if using as object cache) // Try and see if memcache is present & enabled - try { - if ((isset($CONFIG->memcache) && ($CONFIG->memcache=true))) - return new ElggMemcache($namespace); - } catch (Exception $e) { - if ((isset($CONFIG->debug)) && ($CONFIG->debug == true)) - error_log("$e"); - } + if (is_memcache_available()) + return new ElggMemcache($namespace); return new ElggStaticVariableCache($namespace); } diff --git a/engine/lib/memcache.php b/engine/lib/memcache.php index 8afef6302..ec3ebc783 100644 --- a/engine/lib/memcache.php +++ b/engine/lib/memcache.php @@ -213,4 +213,29 @@ $this->save_persistent_keylist(); }*/ } + + /** + * Return true if memcache is available and configured. + * + * @return bool + */ + function is_memcache_available() + { + global $CONFIG; + + static $memcache_available; + + if ((!isset($CONFIG->memcache)) || (!$CONFIG->memcache)) + return false; + + if (($memcache_available!==true) && ($memcache_available!==false)) // If we haven't set variable to something + { + try { + $tmp = new ElggMemcache(); + $memcache_available = true; // No exception thrown so we have memcache available + } catch (Exception $e) { $memcache_available = false; } + } + + return $memcache_available; + } ?>
\ No newline at end of file |