]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/cache.php
Introduced common_location_shared() to check if location sharing is always,
[quix0rs-gnu-social.git] / lib / cache.php
index eb4eb666567a9f21bf7b51e53c09bdf2a9390dd4..104314cb06b24aee08eb3688b12dd9e7af6c4bce 100644 (file)
  */
 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);
@@ -166,7 +176,7 @@ class Cache
 
         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));
@@ -193,7 +203,9 @@ class Cache
         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;
 
@@ -244,7 +256,7 @@ class Cache
 
         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;