]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Memcached_DataObject.php
Merge branch 'master' into 0.9.x
[quix0rs-gnu-social.git] / classes / Memcached_DataObject.php
index be8137573d31530862a1e63f05bd63d605c89902..4f81bef75c4fb4da016919fd3baf30c8c7262371 100644 (file)
@@ -60,18 +60,17 @@ class Memcached_DataObject extends DB_DataObject
         if ($i) {
             return $i;
         } else {
-            $i = DB_DataObject::staticGet($cls, $k, $v);
-            if ($i) {
-                // DB_DataObject's in-process lookup cache interferes with GC
-                // to cause massive memory leaks in long-running processes.
-                if (php_sapi_name() == 'cli') {
-                    $i->_clear_cache();
-                }
-                
-                // Now store it into the shared memcached, if present...
+            $i = DB_DataObject::factory($cls);
+            if (empty($i)) {
+                return null;
+            }
+            $result = $i->get($k, $v);
+            if ($result) {
                 $i->encache();
+                return $i;
+            } else {
+                return null;
             }
-            return $i;
         }
     }
 
@@ -263,6 +262,18 @@ class Memcached_DataObject extends DB_DataObject
         return new ArrayWrapper($cached);
     }
 
+    function cleanup()
+    {
+        global $_DB_DATAOBJECT;
+
+        if (isset($_DB_DATAOBJECT['RESULTFIELDS'][$this->_DB_resultid])) {
+            unset($_DB_DATAOBJECT['RESULTFIELDS'][$this->_DB_resultid]);
+        }
+        if (isset($_DB_DATAOBJECT['RESULTS'][$this->_DB_resultid])) {
+            unset($_DB_DATAOBJECT['RESULTS'][$this->_DB_resultid]);
+        }
+    }
+
     // We overload so that 'SET NAMES "utf8"' is called for
     // each connection