Skip to content
Snippets Groups Projects
Unverified Commit bfa49410 authored by Daniel Kesselberg's avatar Daniel Kesselberg
Browse files

Drop support for xcache

parent 4cdad9b6
No related branches found
No related tags found
No related merge requests found
...@@ -1059,7 +1059,6 @@ $CONFIG = array( ...@@ -1059,7 +1059,6 @@ $CONFIG = array(
* * ``\OC\Memcache\ArrayCache`` In-memory array-based backend (not recommended) * * ``\OC\Memcache\ArrayCache`` In-memory array-based backend (not recommended)
* * ``\OC\Memcache\Memcached`` Memcached backend * * ``\OC\Memcache\Memcached`` Memcached backend
* * ``\OC\Memcache\Redis`` Redis backend * * ``\OC\Memcache\Redis`` Redis backend
* * ``\OC\Memcache\XCache`` XCache backend
* *
* Advice on choosing between the various backends: * Advice on choosing between the various backends:
* *
......
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OC\Memcache;
use OCP\IMemcache;
/**
* See http://xcache.lighttpd.net/wiki/XcacheApi for provided constants and
* functions etc.
*/
class XCache extends Cache implements IMemcache {
use CASTrait;
use CADTrait;
/**
* entries in XCache gets namespaced to prevent collisions between ownCloud instances and users
*/
protected function getNameSpace() {
return $this->prefix;
}
public function get($key) {
return xcache_get($this->getNameSpace() . $key);
}
public function set($key, $value, $ttl = 0) {
if ($ttl > 0) {
return xcache_set($this->getNameSpace() . $key, $value, $ttl);
} else {
return xcache_set($this->getNameSpace() . $key, $value);
}
}
public function hasKey($key) {
return xcache_isset($this->getNameSpace() . $key);
}
public function remove($key) {
return xcache_unset($this->getNameSpace() . $key);
}
public function clear($prefix = '') {
if (function_exists('xcache_unset_by_prefix')) {
return xcache_unset_by_prefix($this->getNameSpace() . $prefix);
} else {
// Since we can not clear by prefix, we just clear the whole cache.
xcache_clear_cache(\XC_TYPE_VAR, 0);
}
return true;
}
/**
* Set a value in the cache if it's not already stored
*
* @param string $key
* @param mixed $value
* @param int $ttl Time To Live in seconds. Defaults to 60*60*24
* @return bool
*/
public function add($key, $value, $ttl = 0) {
if ($this->hasKey($key)) {
return false;
} else {
return $this->set($key, $value, $ttl);
}
}
/**
* Increase a stored number
*
* @param string $key
* @param int $step
* @return int | bool
*/
public function inc($key, $step = 1) {
return xcache_inc($this->getPrefix() . $key, $step);
}
/**
* Decrease a stored number
*
* @param string $key
* @param int $step
* @return int | bool
*/
public function dec($key, $step = 1) {
return xcache_dec($this->getPrefix() . $key, $step);
}
static public function isAvailable() {
if (!extension_loaded('xcache')) {
return false;
}
if (\OC::$CLI && !getenv('XCACHE_TEST')) {
return false;
}
if (!function_exists('xcache_unset_by_prefix') && \OC::$server->getIniWrapper()->getBool('xcache.admin.enable_auth')) {
// We do not want to use XCache if we can not clear it without
// using the administration function xcache_clear_cache()
// AND administration functions are password-protected.
return false;
}
$var_size = \OC::$server->getIniWrapper()->getBytes('xcache.var_size');
if (!$var_size) {
return false;
}
return true;
}
}
...@@ -1403,14 +1403,6 @@ class OC_Util { ...@@ -1403,14 +1403,6 @@ class OC_Util {
if (function_exists('accelerator_reset')) { if (function_exists('accelerator_reset')) {
accelerator_reset(); accelerator_reset();
} }
// XCache
if (function_exists('xcache_clear_cache')) {
if (\OC::$server->getIniWrapper()->getBool('xcache.admin.enable_auth')) {
\OCP\Util::writeLog('core', 'XCache opcode cache will not be cleared because "xcache.admin.enable_auth" is enabled.', ILogger::WARN);
} else {
@xcache_clear_cache(XC_TYPE_PHP, 0);
}
}
// Opcache (PHP >= 5.5) // Opcache (PHP >= 5.5)
if (function_exists('opcache_reset')) { if (function_exists('opcache_reset')) {
@opcache_reset(); @opcache_reset();
......
<?php
/**
* Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace Test\Memcache;
class XCacheTest extends Cache {
protected function setUp() {
parent::setUp();
if (!\OC\Memcache\XCache::isAvailable()) {
$this->markTestSkipped('The xcache extension is not available.');
return;
}
$this->instance = new \OC\Memcache\XCache($this->getUniqueID());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment