server/lib/private/memcache/xcache.php
Andreas Fischer c205d8d1c9 Merge remote-tracking branch 'owncloud/master' into fixing-3417-master
* owncloud/master: (1989 commits)
  [tx-robot] updated from transifex
  dont try to register background jobs if we haven't upgraded yet
  adjust test
  coding style
  coding style
  On webdav sesssions, loginname was compared to username which does not need to match necessarily
  rely only on php DateTime to parse the db datetime string
  LDAP: fix method behind save button on advancend and expert tabs, fixes at least Home Folder setinng
  Fix webroot for update page
  Update 3rdparty ref
  update 3rdparty
  toggle select all checkbox
  remove unneeded ; in comment
  LDAP: the browser shall not autofill userdn and password, usually login credentials are inserted. fixes #6283
  Add test for having utf8 filenames in the cache
  fix fallback overwriting result of getHome
  [tx-robot] updated from transifex
  fix smbclient directory listing parser
  cache the home folder of a User
  Send "SET NAMES utf8" to MySQL for PHP below 5.3.6
  ...

Conflicts:
	lib/util.php
2013-12-14 18:32:48 +01:00

69 lines
1.7 KiB
PHP

<?php
/**
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OC\Memcache;
/**
* See http://xcache.lighttpd.net/wiki/XcacheApi for provided constants and
* functions etc.
*/
class XCache extends Cache {
/**
* 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;
}
static public function isAvailable(){
if (!extension_loaded('xcache')) {
return false;
}
if (\OC::$CLI) {
return false;
}
if (!function_exists('xcache_unset_by_prefix') && ini_get('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;
}
return true;
}
}