From cd147bb37ae247082442f87b3cdd7d3d752e2d37 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Mon, 6 Jan 2014 12:58:43 +0100
Subject: [PATCH] Use APCIterator for Memcache\APC::clear()

---
 lib/private/memcache/apc.php  | 27 ++++++++-------------------
 lib/private/memcache/apcu.php |  7 -------
 2 files changed, 8 insertions(+), 26 deletions(-)

diff --git a/lib/private/memcache/apc.php b/lib/private/memcache/apc.php
index 575ee4427d..d5bc1498d6 100644
--- a/lib/private/memcache/apc.php
+++ b/lib/private/memcache/apc.php
@@ -9,15 +9,8 @@
 namespace OC\Memcache;
 
 class APC extends Cache {
-	/**
-	 * entries in APC gets namespaced to prevent collisions between owncloud instances and users
-	 */
-	protected function getNameSpace() {
-		return $this->prefix;
-	}
-
 	public function get($key) {
-		$result = apc_fetch($this->getNamespace() . $key, $success);
+		$result = apc_fetch($this->getPrefix() . $key, $success);
 		if (!$success) {
 			return null;
 		}
@@ -25,26 +18,22 @@ class APC extends Cache {
 	}
 
 	public function set($key, $value, $ttl = 0) {
-		return apc_store($this->getNamespace() . $key, $value, $ttl);
+		return apc_store($this->getPrefix() . $key, $value, $ttl);
 	}
 
 	public function hasKey($key) {
-		return apc_exists($this->getNamespace() . $key);
+		return apc_exists($this->getPrefix() . $key);
 	}
 
 	public function remove($key) {
-		return apc_delete($this->getNamespace() . $key);
+		return apc_delete($this->getPrefix() . $key);
 	}
 
 	public function clear($prefix = '') {
-		$ns = $this->getNamespace() . $prefix;
-		$cache = apc_cache_info('user');
-		foreach ($cache['cache_list'] as $entry) {
-			if (strpos($entry['info'], $ns) === 0) {
-				apc_delete($entry['info']);
-			}
-		}
-		return true;
+		$ns = $this->getPrefix() . $prefix;
+		$ns = preg_quote($ns, '/');
+		$iter = new \APCIterator('user', '/^' . $ns . '/');
+		return apc_delete($iter);
 	}
 
 	static public function isAvailable() {
diff --git a/lib/private/memcache/apcu.php b/lib/private/memcache/apcu.php
index dac0f5f208..7f780f3271 100644
--- a/lib/private/memcache/apcu.php
+++ b/lib/private/memcache/apcu.php
@@ -9,13 +9,6 @@
 namespace OC\Memcache;
 
 class APCu extends APC {
-	public function clear($prefix = '') {
-		$ns = $this->getNamespace() . $prefix;
-		$ns = preg_quote($ns, '/');
-		$iter = new \APCIterator('user', '/^'.$ns.'/');
-		return apc_delete($iter);
-	}
-
 	static public function isAvailable() {
 		if (!extension_loaded('apcu')) {
 			return false;
-- 
GitLab