mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-16 05:34:01 +02:00
[task/acm-refactor] Refactor the ACM classes to have a common interface.
They are now refered to as cache drivers rather than ACM classes. The additional utility functions from the original cache class have been moved to the cache_service. The class loader is now instantiated without a cache instance and passed one as soon as it is constructed to allow autoloading the cache classes. PHPBB3-9983
This commit is contained in:
113
phpBB/includes/cache/driver/xcache.php
vendored
Normal file
113
phpBB/includes/cache/driver/xcache.php
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package acm
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005, 2009 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* ACM for XCache
|
||||
* @package acm
|
||||
*
|
||||
* To use this module you need ini_get() enabled and the following INI settings configured as follows:
|
||||
* - xcache.var_size > 0
|
||||
* - xcache.admin.enable_auth = off (or xcache.admin.user and xcache.admin.password set)
|
||||
*
|
||||
*/
|
||||
class phpbb_cache_driver_xcache extends phpbb_cache_driver_memory
|
||||
{
|
||||
var $extension = 'XCache';
|
||||
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if (!function_exists('ini_get') || (int) ini_get('xcache.var_size') <= 0)
|
||||
{
|
||||
trigger_error('Increase xcache.var_size setting above 0 or enable ini_get() to use this ACM module.', E_USER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Purge cache data
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function purge()
|
||||
{
|
||||
// Run before for XCache, if admin functions are disabled it will terminate execution
|
||||
parent::purge();
|
||||
|
||||
// If the admin authentication is enabled but not set up, this will cause a nasty error.
|
||||
// Not much we can do about it though.
|
||||
$n = xcache_count(XC_TYPE_VAR);
|
||||
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
{
|
||||
xcache_clear_cache(XC_TYPE_VAR, $i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch an item from the cache
|
||||
*
|
||||
* @access protected
|
||||
* @param string $var Cache key
|
||||
* @return mixed Cached data
|
||||
*/
|
||||
function _read($var)
|
||||
{
|
||||
$result = xcache_get($this->key_prefix . $var);
|
||||
|
||||
return ($result !== null) ? $result : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store data in the cache
|
||||
*
|
||||
* @access protected
|
||||
* @param string $var Cache key
|
||||
* @param mixed $data Data to store
|
||||
* @param int $ttl Time-to-live of cached data
|
||||
* @return bool True if the operation succeeded
|
||||
*/
|
||||
function _write($var, $data, $ttl = 2592000)
|
||||
{
|
||||
return xcache_set($this->key_prefix . $var, $data, $ttl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove an item from the cache
|
||||
*
|
||||
* @access protected
|
||||
* @param string $var Cache key
|
||||
* @return bool True if the operation succeeded
|
||||
*/
|
||||
function _delete($var)
|
||||
{
|
||||
return xcache_unset($this->key_prefix . $var);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a cache var exists
|
||||
*
|
||||
* @access protected
|
||||
* @param string $var Cache key
|
||||
* @return bool True if it exists, otherwise false
|
||||
*/
|
||||
function _isset($var)
|
||||
{
|
||||
return xcache_isset($this->key_prefix . $var);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user