aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/cache/driver/xcache.php
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2013-07-14 11:57:53 -0400
committerJoas Schilling <nickvergessen@gmx.de>2013-07-14 11:57:53 -0400
commitd7a85ebc245e76038b8ccd56524f045cc92a6c13 (patch)
tree66aa645c4d86636f0bce04a7125a7757a466b224 /phpBB/phpbb/cache/driver/xcache.php
parentfa3cdb6bf2cfdca9c26168bd258752718bc8a43f (diff)
parentf6865dc33a8cedb7d21a64401ed80d2edbac36bd (diff)
downloadforums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar
forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar.gz
forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar.bz2
forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.tar.xz
forums-d7a85ebc245e76038b8ccd56524f045cc92a6c13.zip
Merge remote-tracking branch 'igorw/ticket/11574' into ticket/11574
* igorw/ticket/11574: (575 commits) [ticket/11702] Fix forum_posts left over for link-click counts in viewforum.php [ticket/11696] Move file to new directory [ticket/11696] Rename constructor to __construct() [ticket/11696] Remove manual loading of db_tools in extension controller test [ticket/11696] Rename db_tools.php so it can be autoloaded [ticket/11698] Moving all autoloadable files to phpbb/ [ticket/11694] Do not locate assets with root path [ticket/11692] Don't update search_type in dev migration if already appended [ticket/11675] Fix template loop [ticket/11690] Old module class names may get autoloaded by class_exists [ticket/9649] Display information on index for moderators on unapproved posts [ticket/10999] Fix assets_version in ACP [prep-release-3.0.12] More changelog items for the 3.0.12 release. [ticket/11687] Add assets_version to phpbb_config [ticket/11686] Not checking for phpBB Debug errors on functional tests [ticket/11670] Consistency with logo: Replace "phpBB(tm)" with "phpBB(R)". [ticket/11674] Do not include vendor folder if there are no dependencies. [ticket/11685] Remove logout confirmation page [ticket/11684] Remove useless confirmation page after login and admin login [ticket/9657] Define user before injecting ...
Diffstat (limited to 'phpBB/phpbb/cache/driver/xcache.php')
-rw-r--r--phpBB/phpbb/cache/driver/xcache.php112
1 files changed, 112 insertions, 0 deletions
diff --git a/phpBB/phpbb/cache/driver/xcache.php b/phpBB/phpbb/cache/driver/xcache.php
new file mode 100644
index 0000000000..06c5fafd97
--- /dev/null
+++ b/phpBB/phpbb/cache/driver/xcache.php
@@ -0,0 +1,112 @@
+<?php
+/**
+*
+* @package acm
+* @copyright (c) 2005, 2009 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @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 null
+ */
+ 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);
+ }
+}