0

0

强大的PHP缓存种(eaccelerator、apc、xcache、memcache模块缓存)

php中文网

php中文网

发布时间:2016-06-13 10:55:03

|

973人浏览过

|

来源于php中文网

原创

强大的PHP缓存类(eaccelerator、apc、xcache、memcache模块缓存)

cache_expire=$exp_time;        $this->cache_params=$params;        $this->setCacheType($type);    }         public function __destruct() {        unset($this->cache_external);    }         // Prevent users to clone the instance    public function __clone(){        $this->cacheError('Clone is not allowed.');    }         //deletes cache from folder    public function clearCache(){        switch($this->cache_type){            case 'eaccelerator':                @eaccelerator_clean();                @eaccelerator_clear();            break;             case 'apc':                apc_clear_cache('user');            break;             case 'xcache':                xcache_clear_cache(XC_TYPE_VAR, 0);            break;             case 'memcache':                @$this->cache_external->flush();            break;                         case 'filecache':                $this->cache_external->deleteCache();            break;        }      }         //writes or reads the cache    public function cache($key, $value='',$ttl=''){        if ($value!=''){//wants to write            if ($ttl=='') $ttl=$this->cache_expire;            $this->put($key, $value,$ttl);        }        else return $this->get($key);//reading value    }         //creates new cache files with the given data, $key== name of the cache, data the info/values to store    private function put($key,$data,$ttl='' ){        if ($ttl=='') $ttl=$this->cache_expire;                 switch($this->cache_type){            case 'eaccelerator':                eaccelerator_put($key, serialize($data), $ttl);            break;             case 'apc':                apc_store($key, $data, $ttl);            break;             case 'xcache':                xcache_set($key, serialize($data), $ttl);            break;             case 'memcache':                $data=serialize($data);                if (!$this->cache_external->replace($key, $data, false, $ttl))                $this->cache_external->set($key, $data, false, $ttl);            break;                         case 'filecache':                $this->cache_external->cache($key,$data);            break;        }      }         //returns cache for the given key    private function get($key){        switch($this->cache_type){            case 'eaccelerator':                $data =  @unserialize(eaccelerator_get($key));            break;             case 'apc':                $data =  apc_fetch($key);            break;             case 'xcache':                $data =  @unserialize(xcache_get($key));            break;             case 'memcache':                $data = @unserialize($this->cache_external->get($key));            break;                         case 'filecache':                $data = $this->cache_external->cache($key);            break;        }          /*echo '
--returnning data for key:'.$key; var_dump($data);*/ return $data; } //delete key from cache public function delete($key){ switch($this->cache_type){ case 'eaccelerator': eaccelerator_rm($key); break; case 'apc': apc_delete($key); break; case 'xcache': xcache_unset($key); break; case 'memcache': $this->cache_external->delete($key); break; case 'filecache': $this->cache_external->delete($key); break; } } // Overloading for the Application variables and automatically cached public function __set($name, $value) { $this->put($name, $value, $this->cache_expire); } public function __get($name) { return $this->get($name); } public function __isset($key) {//echo "Is '$name' set?\n" if ($this->get($key) !== false) return true; else return false; } public function __unset($name) {//echo "Unsetting '$name'\n"; $this->delete($name); } //end overloads public function getCacheType(){ return $this->$this->cache_type; } //sets the cache if its installed if not triggers error public function setCacheType($type){ $this->cache_type=strtolower($type); switch($this->cache_type){ case 'eaccelerator': if (function_exists('eaccelerator_get')) $this->cache_type = 'eaccelerator'; else $this->cacheError('eaccelerator not found'); break; case 'apc': if (function_exists('apc_fetch')) $this->cache_type = 'apc' ; else $this->cacheError('APC not found'); break; case 'xcache': if (function_exists('xcache_get')) $this->cache_type = 'xcache' ; else $this->cacheError('Xcache not found'); break; case 'memcache': if (class_exists('Memcache')) $this->init_memcache(); else $this->cacheError('memcache not found'); break; case 'filecache': if (class_exists('fileCache'))$this->init_filecache(); else $this->cacheError('fileCache not found'); break; case 'auto'://try to auto select a cache system if (function_exists('eaccelerator_get')) $this->cache_type = 'eaccelerator'; elseif (function_exists('apc_fetch')) $this->cache_type = 'apc' ; elseif (function_exists('xcache_get')) $this->cache_type = 'xcache' ; elseif (class_exists('Memcache')) $this->init_memcache(); elseif (class_exists('fileCache')) $this->init_filecache(); else $this->cacheError('not any compatible cache was found'); break; default://not any cache selected or wrong one selected if (isset($type)) $msg='Unrecognized cache type selected '.$type.''; else $msg='Not any cache type selected'; $this->cacheError($msg); break; } } private function init_memcache(){//get instance of the memcache class if (is_array($this->cache_params)){ $this->cache_type = 'memcache'; $this->cache_external = new Memcache; foreach ($this->cache_params as $server) { $server['port'] = isset($server['port']) ? (int) $server['port'] : ini_get('memcache.default_port'); $server['persistent'] = isset($server['persistent']) ? (bool) $server['persistent'] : true; $this->cache_external->addServer($server['host'], $server['port'], $server['persistent']); } } else $this->cacheError('memcache needs an array, example: wrapperCache::GetInstance(\'memcache\',30,array(array(\'host\'=>\'localhost\')));'); } private function init_filecache(){//get instance of the filecache class $this->cache_type = 'filecache'; $this->cache_external = fileCache::GetInstance($this->cache_expire,$this->cache_params); } public function getAvailableCache($return_format='html'){//returns the available cache $avCaches = array(); $avCaches[] = array('eaccelerator',function_exists('eaccelerator_get')); $avCaches[] = array('apc',function_exists('apc_fetch')) ; $avCaches[] = array('xcache',function_exists('xcache_get')); $avCaches[] = array('memcache',class_exists('Memcache')); $avCaches[] = array('fileCache',class_exists('fileCache')); if ($return_format=='html'){ $ret='
    '; foreach ($avCaches as $c){ $ret.='
  • '.$c[0].' - '; if ($c[1]) $ret.='Found/Compatible'; else $ret.='Not Found/Incompatible'; $ret.=''; } return $ret.'
'; } else return $avCaches; } private function cacheError($msg){//triggers error trigger_error('
wrapperCache error: '.$msg. '
If you want you can try with \'auto\' for auto select a compatible cache.
Or choose a supported cache from list:'.$this->getAvailableCache(), E_USER_ERROR); }}?>

?基于文件的

悦灵犀AI
悦灵犀AI

一个集AI绘画、问答、创作于一体的一站式AI工具平台

下载

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MIP文档手册
MIP文档手册

共47课时 | 27.6万人学习

YMP在线手册
YMP在线手册

共64课时 | 40.3万人学习

JavaScript高级框架设计视频教程
JavaScript高级框架设计视频教程

共22课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号