* php 7.x APCu cache support

This commit is contained in:
slawkens1 2017-12-26 21:47:53 +01:00
parent a95c93cd5b
commit c415cf5ffb
4 changed files with 61 additions and 1 deletions

1
TODO
View File

@ -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)

View File

@ -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)

View File

@ -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'))

View File

@ -0,0 +1,52 @@
<?php
/**
* Cache APC class
*
* @package MyAAC
* @author Slawkens <slawkens@gmail.com>
* @author Mark Samman (Talaturen) <marksamman@gmail.com>
* @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;
}
}
?>