]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/cache.php
getAcctUri function added with related exception
[quix0rs-gnu-social.git] / lib / cache.php
index dc667654ab6ef327e8a022ae1b13d7612ecfa1b2..59110f74d845f1a425ffbcdbca7cab44a9a75c2f 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
      *
@@ -80,7 +92,7 @@ class Cache
         $base_key = common_config('cache', 'base');
 
         if (empty($base_key)) {
-            $base_key = common_keyize(common_config('site', 'name'));
+            $base_key = self::keyize(common_config('site', 'name'));
         }
 
         return 'statusnet:' . $base_key . ':' . $extra;
@@ -164,8 +176,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 +201,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 +230,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 +256,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;