X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fcache.php;h=104314cb06b24aee08eb3688b12dd9e7af6c4bce;hb=746e658f3e398948fe8c3f047e2b35ef6aa7ebd5;hp=8dc97a6428c5f89e39fa07c420ae899399d06697;hpb=e79034e163967a375aee8a9afff54fd9c37030dd;p=quix0rs-gnu-social.git diff --git a/lib/cache.php b/lib/cache.php index 8dc97a6428..104314cb06 100644 --- a/lib/cache.php +++ b/lib/cache.php @@ -43,11 +43,23 @@ */ class Cache { - var $_items = array(); + /** + * @var array additional in-process cache for web requests; + * disabled on CLI, unsafe for long-running daemons + */ + var $_items = array(); + var $_inlineCache = true; static $_inst = null; const COMPRESSED = 1; + private function __construct() { + // Potentially long-running daemons or maintenance scripts + // should not use an in-process cache as it becomes out of + // date. + $this->_inlineCache = (php_sapi_name() != 'cli'); + } + /** * Singleton constructor * @@ -83,7 +95,7 @@ class Cache $base_key = self::keyize(common_config('site', 'name')); } - return 'statusnet:' . $base_key . ':' . $extra; + return 'gnusocial:' . $base_key . ':' . $extra; } /** @@ -113,14 +125,12 @@ class Cache if (empty($prefix)) { - $plugins = StatusNet::getActivePlugins(); - $names = array(); + $names = array(); - foreach ($plugins as $plugin) { - $names[] = $plugin[0]; + foreach (GNUsocial::getActivePlugins() as $plugin=>$attrs) { + $names[] = $plugin; } - $names = array_unique($names); asort($names); // Unique enough. @@ -129,7 +139,7 @@ class Cache $build = common_config('site', 'build'); - $prefix = STATUSNET_VERSION.':'.$build.':'.$uniq; + $prefix = GNUSOCIAL_VERSION.':'.$build.':'.$uniq; } return Cache::key($prefix.':'.$extra); @@ -164,8 +174,9 @@ class Cache { $value = false; + common_perf_counter('Cache::get', $key); if (Event::handle('StartCacheGet', array(&$key, &$value))) { - if (array_key_exists($key, $this->_items)) { + if ($this->_inlineCache && array_key_exists($key, $this->_items)) { $value = unserialize($this->_items[$key]); } Event::handle('EndCacheGet', array($key, &$value)); @@ -188,10 +199,13 @@ class Cache { $success = false; + common_perf_counter('Cache::set', $key); if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag, &$expiry, &$success))) { - $this->_items[$key] = serialize($value); + if ($this->_inlineCache) { + $this->_items[$key] = serialize($value); + } $success = true; @@ -214,6 +228,7 @@ class Cache function increment($key, $step=1) { $value = false; + common_perf_counter('Cache::increment', $key); if (Event::handle('StartCacheIncrement', array(&$key, &$step, &$value))) { // Fallback is not guaranteed to be atomic, // and may original expiry value. @@ -239,8 +254,9 @@ class Cache { $success = false; + common_perf_counter('Cache::delete', $key); if (Event::handle('StartCacheDelete', array(&$key, &$success))) { - if (array_key_exists($key, $this->_items)) { + if ($this->_inlineCache && array_key_exists($key, $this->_items)) { unset($this->_items[$key]); } $success = true;