From 0ba78f6b31467be7a44a231dea8d769dddc33176 Mon Sep 17 00:00:00 2001 From: Discuz! Date: Sat, 4 Feb 2017 10:54:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20APCu=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- upload/config/config_global_default.php | 9 ++-- upload/source/admincp/admincp_setting.php | 10 +++- upload/source/class/discuz/discuz_memory.php | 10 ++-- .../class/memory/memory_driver_apcu.php | 51 +++++++++++++++++++ .../source/class/memory/memory_driver_yac.php | 48 +++++++++-------- 5 files changed, 92 insertions(+), 36 deletions(-) create mode 100644 upload/source/class/memory/memory_driver_apcu.php diff --git a/upload/config/config_global_default.php b/upload/config/config_global_default.php index 1a9ddc9..c10b824 100644 --- a/upload/config/config_global_default.php +++ b/upload/config/config_global_default.php @@ -4,7 +4,7 @@ * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * - * $Id: config_global_default.php 36287 2016-12-12 03:59:05Z nemohou $ + * $Id: config_global_default.php 36362 2017-02-04 02:02:03Z nemohou $ */ $_config = array(); @@ -111,11 +111,12 @@ $_config['memory']['memcache']['port'] = 11211; // memcache 服务器端口 $_config['memory']['memcache']['pconnect'] = 1; // memcache 是否长久连接 $_config['memory']['memcache']['timeout'] = 1; // memcache 服务器连接超时 -$_config['memory']['apc'] = 1; // 启动对 apc 的支持 +$_config['memory']['apc'] = 1; // 启动对 APC 的支持 +$_config['memory']['apcu'] = 1; // 启动对 APCu 的支持 $_config['memory']['xcache'] = 1; // 启动对 xcache 的支持 $_config['memory']['eaccelerator'] = 1; // 启动对 eaccelerator 的支持 $_config['memory']['wincache'] = 1; // 启动对 wincache 的支持 -$_config['memory']['yac'] = 1; //启动对 YAC的支持 +$_config['memory']['yac'] = 1; //启动对 YAC的支持 // 服务器相关设置 $_config['server']['id'] = 1; // 服务器编号,多webserver的时候,用于标识当前服务器的ID @@ -197,4 +198,4 @@ $_config['input']['compatible'] = 1; // ) //); -?> +?> \ No newline at end of file diff --git a/upload/source/admincp/admincp_setting.php b/upload/source/admincp/admincp_setting.php index d287eab..10a6de5 100644 --- a/upload/source/admincp/admincp_setting.php +++ b/upload/source/admincp/admincp_setting.php @@ -4,7 +4,7 @@ * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * - * $Id: admincp_setting.php 36349 2017-01-16 03:05:23Z nemohou $ + * $Id: admincp_setting.php 36362 2017-02-04 02:02:03Z nemohou $ */ if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) { exit('Access Denied'); @@ -2247,6 +2247,11 @@ EOT; $cache_config['yac'] ? cplang('open') : cplang('closed'), $cache_type == 'yac' ? $do_clear_link : '--' ); + $apcu = array('APCu', + $cache_extension['apcu'] ? cplang('setting_memory_php_enable') : cplang('setting_memory_php_disable'), + $cache_config['apcu'] ? cplang('open') : cplang('closed'), + $cache_type == 'apcu' ? $do_clear_link : '--' + ); showtablerow('', array('width="100"', 'width="120"', 'width="120"'), $redis); showtablerow('', '', $memcache); showtablerow('', '', $apc); @@ -2254,6 +2259,7 @@ EOT; showtablerow('', '', $ea); showtablerow('', '', $wincache); showtablerow('', '', $yac); + showtablerow('', '', $apcu); showtablefooter(); if(!isset($setting['memory'])) { @@ -3691,4 +3697,4 @@ function showsetting_threadprfile($authorinfoitems, $template = array()) {
'.$buttons.'
'; } -?> +?> \ No newline at end of file diff --git a/upload/source/class/discuz/discuz_memory.php b/upload/source/class/discuz/discuz_memory.php index 015c086..fd20885 100644 --- a/upload/source/class/discuz/discuz_memory.php +++ b/upload/source/class/discuz/discuz_memory.php @@ -4,7 +4,7 @@ * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * - * $Id: discuz_memory.php 31432 2012-08-28 03:04:18Z zhangguosheng $ + * $Id: discuz_memory.php 36362 2017-02-04 02:02:03Z nemohou $ */ if(!defined('IN_DISCUZ')) { @@ -29,8 +29,8 @@ class discuz_memory extends discuz_base $this->extension['xcache'] = function_exists('xcache_get'); $this->extension['eaccelerator'] = function_exists('eaccelerator_get'); $this->extension['wincache'] = function_exists('wincache_ucache_meminfo') && wincache_ucache_meminfo(); - $this->extension['xcache'] = function_exists('xcache_get'); - $this->extension['yac'] = extension_loaded('Yac'); + $this->extension['yac'] = extension_loaded('Yac'); + $this->extension['apcu'] = function_exists('apcu_cache_info') && @apcu_cache_info(); } public function init($config) { @@ -54,7 +54,7 @@ class discuz_memory extends discuz_base } } - foreach(array('apc', 'eaccelerator', 'xcache', 'wincache','yac') as $cache) { + foreach(array('apc', 'eaccelerator', 'xcache', 'wincache', 'yac', 'apcu') as $cache) { if(!is_object($this->memory) && $this->extension[$cache] && $this->config[$cache]) { $class_name = 'memory_driver_'.$cache; $this->memory = new $class_name(); @@ -191,4 +191,4 @@ class discuz_memory extends discuz_base } } -?> +?> \ No newline at end of file diff --git a/upload/source/class/memory/memory_driver_apcu.php b/upload/source/class/memory/memory_driver_apcu.php new file mode 100644 index 0000000..ab65ef7 --- /dev/null +++ b/upload/source/class/memory/memory_driver_apcu.php @@ -0,0 +1,51 @@ +object = new yac(); + $this->object = new yac(); } public function get($key) { @@ -25,13 +23,13 @@ class memory_driver_yac } public function getMulti($keys) { - $result = $this->object->get($keys); - foreach ($result as $key => $value) { - if($value===false){ - unset($result[$key]); - } - } - return $result; + $result = $this->object->get($keys); + foreach ($result as $key => $value) { + if ($value === false) { + unset($result[$key]); + } + } + return $result; } public function set($key, $value, $ttl = 0) { @@ -39,7 +37,7 @@ class memory_driver_yac } public function rm($key) { - return $this->object->delete($key); + return $this->object->delete($key); } public function clear() { @@ -47,19 +45,19 @@ class memory_driver_yac } public function inc($key, $step = 1) { - $old = $this->get($key); - if(!$old){ - return false; - } - return $this->set($key,$old+$step); + $old = $this->get($key); + if (!$old) { + return false; + } + return $this->set($key, $old + $step); } public function dec($key, $step = 1) { - $old = $this->get($key); - if(!$old){ - return false; - } - return $this->set($key,$old-$step); + $old = $this->get($key); + if (!$old) { + return false; + } + return $this->set($key, $old - $step); } -} +} \ No newline at end of file