|
|
|
|
@ -63,7 +63,7 @@ class Memcached extends Cache implements IMemcache { |
|
|
|
|
\Memcached::OPT_LIBKETAMA_COMPATIBLE => true, |
|
|
|
|
|
|
|
|
|
// Enable Binary Protocol |
|
|
|
|
\Memcached::OPT_BINARY_PROTOCOL => true, |
|
|
|
|
\Memcached::OPT_BINARY_PROTOCOL => true, |
|
|
|
|
]; |
|
|
|
|
/** |
|
|
|
|
* By default enable igbinary serializer if available |
|
|
|
|
@ -119,10 +119,7 @@ class Memcached extends Cache implements IMemcache { |
|
|
|
|
} else { |
|
|
|
|
$result = self::$cache->set($this->getNameSpace() . $key, $value); |
|
|
|
|
} |
|
|
|
|
if ($result !== true) { |
|
|
|
|
$this->verifyReturnCode(); |
|
|
|
|
} |
|
|
|
|
return $result; |
|
|
|
|
return $result || $this->isSuccess(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function hasKey($key) { |
|
|
|
|
@ -132,10 +129,7 @@ class Memcached extends Cache implements IMemcache { |
|
|
|
|
|
|
|
|
|
public function remove($key) { |
|
|
|
|
$result = self::$cache->delete($this->getNameSpace() . $key); |
|
|
|
|
if (self::$cache->getResultCode() !== \Memcached::RES_NOTFOUND) { |
|
|
|
|
$this->verifyReturnCode(); |
|
|
|
|
} |
|
|
|
|
return $result; |
|
|
|
|
return $result || $this->isSuccess() || self::$cache->getResultCode() === \Memcached::RES_NOTFOUND; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function clear($prefix = '') { |
|
|
|
|
@ -151,14 +145,10 @@ class Memcached extends Cache implements IMemcache { |
|
|
|
|
* @param mixed $value |
|
|
|
|
* @param int $ttl Time To Live in seconds. Defaults to 60*60*24 |
|
|
|
|
* @return bool |
|
|
|
|
* @throws \Exception |
|
|
|
|
*/ |
|
|
|
|
public function add($key, $value, $ttl = 0) { |
|
|
|
|
$result = self::$cache->add($this->getPrefix() . $key, $value, $ttl); |
|
|
|
|
if (self::$cache->getResultCode() !== \Memcached::RES_NOTSTORED) { |
|
|
|
|
$this->verifyReturnCode(); |
|
|
|
|
} |
|
|
|
|
return $result; |
|
|
|
|
return $result || $this->isSuccess(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -200,15 +190,7 @@ class Memcached extends Cache implements IMemcache { |
|
|
|
|
return extension_loaded('memcached'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @throws \Exception |
|
|
|
|
*/ |
|
|
|
|
private function verifyReturnCode() { |
|
|
|
|
$code = self::$cache->getResultCode(); |
|
|
|
|
if ($code === \Memcached::RES_SUCCESS) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
$message = self::$cache->getResultMessage(); |
|
|
|
|
throw new \Exception("Error $code interacting with memcached : $message"); |
|
|
|
|
private function isSuccess(): bool { |
|
|
|
|
return self::$cache->getResultCode() === \Memcached::RES_SUCCESS; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|