diff --git a/TODO b/TODO index ca9e5898..e21d6a19 100644 --- a/TODO +++ b/TODO @@ -6,6 +6,7 @@ * sandbox for plugins, don't install when requirements are not passed * load items & weapons on install, preferably with ajax * add changelog management interface + * option to require php extension to be installed 1.0: * i18n support (issue #1 on github) diff --git a/config.php b/config.php index d1e53bbd..cf00ef97 100644 --- a/config.php +++ b/config.php @@ -56,7 +56,7 @@ $config = array( 'views_counter' => true, // cache system. by default file cache is used - 'cache_engine' => 'auto', // apc, eaccelerator, xcache, file, auto, or blank to disable. + 'cache_engine' => 'auto', // apc, apcu, eaccelerator, xcache, file, auto, or blank to disable. 'cache_prefix' => 'myaac_', // have to be unique if running more MyAAC instances on the same server (except file system cache) // database details (leave blank for auto detect from config.lua) diff --git a/system/libs/cache.php b/system/libs/cache.php index cf21fc77..10e01fca 100644 --- a/system/libs/cache.php +++ b/system/libs/cache.php @@ -23,6 +23,11 @@ class Cache self::$instance = new Cache_APC($prefix); break; + case 'apcu': + require('cache_apcu.php'); + self::$instance = new Cache_APCu($prefix); + break; + case 'eaccelerator': require('cache_eaccelerator.php'); self::$instance = new Cache_eAccelerator($prefix); @@ -55,6 +60,8 @@ class Cache { if(function_exists('apc_fetch')) return 'apc'; + else if(function_exists('apcu_fetch')) + return 'apcu'; else if(function_exists('eaccelerator_get')) return 'eaccelerator'; else if(function_exists('xcache_get') && ini_get('xcache.var_size')) diff --git a/system/libs/cache_apcu.php b/system/libs/cache_apcu.php new file mode 100644 index 00000000..8c44780e --- /dev/null +++ b/system/libs/cache_apcu.php @@ -0,0 +1,52 @@ + + * @author Mark Samman (Talaturen) + * @copyright 2017 MyAAC + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Cache_APCu +{ + private $prefix = ''; + private $enabled; + + public function __construct($prefix = '') + { + $this->prefix = $prefix; + $this->enabled = function_exists('apcu_fetch'); + } + + public function set($key, $var, $ttl = 0) + { + $key = $this->prefix . $key; + apcu_delete($key); + apcu_store($key, $var, $ttl); + } + + public function get($key) + { + $tmp = ''; + if($this->fetch($key, $tmp)) + return $tmp; + + return ''; + } + + public function fetch($key, &$var) { + return ($var = apcu_fetch($this->prefix . $key)) !== false; + } + + public function delete($key) { + apcu_delete($key); + } + + public function enabled() { + return $this->enabled; + } +} +?>