PHP中的高速缓冲器,对高负载来的网站来说是一个非常需要的组件。其中最经典的使用案例就是用户会话(Session)的高速存取:如果使用默认的基于文件的会话句柄,负载量较大时会产生大量的IO操作,导致系统运行效率降低;而使用基于数据库的会话句柄,虽然性能会得以提高,但负载量大时,还是容易给数据库服务器造成负担。那如何才能调整会话句柄来使PHP最优化呢?
引用
答案是:使用高速缓冲器!
市面上现有的PHP高速缓冲组件很多,常用的有 eAccelerator、XCache、Memcache(这个东东Robin经常提到)、APC等。
这就产生了一个问题:当网站访问量较小时,使用了一种缓冲组件,而访问量增大时可能因为性能问题转到另一个缓冲组件中,如果负载非常大时,估计还要自己写个缓冲组件来适应网站的需要。那么,开发人员需要不断更新网站程序以适应在不同的缓冲组件。
能不能使用一种简单的方法来使用缓冲组件呢?答案是肯定的,CMSPAD团队中有专门负责研发通用缓冲组件的子项目,叫做 CMSPAD Cache。下面看看 CMSPAD Cache 的一些基本使用情况:
1. 创建缓冲引擎:
import('cache.CacheEngine');
$cacheEngine = new CacheEngine('eaccelerator'); // 使用eAccelerator来作为默认的缓冲器。
$cacheEngine = new CacheEngine('xcache'); // 使用XCache来作为默认的缓冲器。
$cacheEngine = new CacheEngine('memcache'); // 使用Memcache来作为默认的缓冲器。
$cacheEngine = new CacheEngine('apc'); // 使用Alternative PHP Cache来作为默认的缓冲器。
$cacheEngine = new CacheEngine('zendplatform'); // 使用Zend Platform来作为默认的缓冲器。
$cacheEngine = new CacheEngine('filesystem'); // 使用本地文件系统来作为默认的缓冲器。
$cacheEngine = new CacheEngine('database'); // 使用CMSPAD内置的数据库组件来作为默认的缓冲器。
//除此之外,您还可以不指定默认缓冲器,让系统自己来选择
$cacheEngine = new CacheEngine(); // 系统根据已载入的PHP扩展库来自行指定缓冲器。
2. 使用缓冲引擎:
$cacheEngine->set('name', 'value'); // 设置永不过期的数据.
$cacheEngine->set('name', 'value', 60); // 设置过期时间为60秒的数据.
$cacheEngine->get('name'); // 获取名称为name的值,如果该值不存在或已过期,则返回NULL。
$cacheEngine->del('name'); // 从缓冲中删除名称为 name 的数据。
$cacheEngine->has('name'); // 检查名称为 name 的数据是否存在,如果不存在或已过期,则返回 false.
使用起来还是相当简单的吧,下面就有个问题了,如果某些牛人或组织自己开发了一个缓冲组件,那怎么才能做CMSPAD Cache的适配器呢?
3. 自定义缓冲组件适配器的开发:
import('cache.CacheProvider');
class cmspad_cache_MyCustomCache extends CacheProvider{
public function set($key, $value, $ttl = 0){
// 添加、更新缓冲数据
}
public function get($key){
// 获取缓冲数据
}
public function del($key){
// 删除缓冲数据
}
public function has($key){
// 检查缓冲数据是否存在
}
}
把上面的代码保存到 inc/cache/providers/MyCustomCache.php 文件中,通过
$cacheEngine = new CacheEngine('MyCustomCache');
即可使用。
下面的给出一段Memcache的实现类,一般比较复杂的缓冲组件都可以这么实现:
class cmspad_cache_memcache extends CacheProvider{
public function __construct($config = array()){
if(isset($config['HOST'])){
$host = $config['HOST'];
}else{
$host = 'localhost';
}
if(isset($config['PORT'])){
$port = intval($config['PORT']);
}else{
$port = false;
}
if(isset($config['TIMEOUT'])){
$timeout = intval($config['TIMEOUT']);
}else{
$timeout = false;
}
if($port){
if($timeout){
memcache_connect($host, $port, $timeout);
}else{
memcache_connect($host, $port);
}
}else{
memcache_connect($host);
}
}
public function __destruct() {
memcache_close();
}
public function set($name, $value, $ttl = 0){
return memcache_set($name, $value, 0, $ttl);
}
public function get($name){
return memcache_get($name);
}
public function del($name){
return memcache_delete($name);
}
public function has($name){
return memcache_get($name) !== FALSE;
}
}
以上代码保存在 inc/cache/providers/memcache.php 中。
分享到:
相关推荐
高速缓冲存贮器(Cache) 工作过程与工作原理
寄存器和高速缓冲储存器(Register and Cache)
高速缓冲存储器Cache的原理、设计及实现 更多资源请访问http://www.59186618.com
高速缓冲存储器的功能 高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。...
PC系统高速缓冲存储器Cache的原理、设计及实现
银行:点评TLAC管理办法和逆周期缓冲机制:资本要求提升或促使银行利润释放.pdf
Web Cache Illuminator 使用网络高速缓冲存储器文件夹创建文件清单命名;也显示被每个网页给的标题的创建者。也有内置的查看和删除向导,所以你有选择性地删除文件。诸如排序依据目录的能力的选择标题或者记载日期,...
采用一级cache设计对五级流水线CPU进行优化,Cache的工作原理是基于程序访问的局部性。根据程序的局部性原理,可以在主存和CPU通用寄存器之间...这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。
以规律化流场特性作为缓冲器优化设计的新思路,研究切向进口缓冲器及径向进口缓冲器在压缩机不同出口压力条件下对压力波动的减弱效果。做5组压缩机不同进出口压力的实验,运用Fluent建立缓冲器及相关接管模型,根据实验...
高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。目的是提高CPU对存储器的...
掌握Cache的功能结构与访问控制策略 培养Linux下的性能测试方法与技巧 深入理解Cache组成结构对C程序性能的影响 X64 CPU;2GHz;2G RAM;256GHD Disk 以上 Windows7 64位以上;VirtualBox/Vmware 11以上;Ubuntu ...
SMC-RB液压缓冲器pdf,SMC-RB液压缓冲器 1、液压缓冲器RB系列 标准型 基本型 带胶垫 2、耐冷却液性液压缓冲器RBL系列 在水不溶性切削油飞散的氛围气中也可使用。 防尘圈及杆密封圈双层密封结构,故从外部能防止...
本设计为先进先出缓冲器设计fifo,通过更改属性变量,可改变fifo规模。
ENIDINE(安力定) 缓冲器产品手册(中文版)pdf,ENIDINE(安力定) 缓冲器产品手册(中文版)
Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问 凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache
为了提高低压差稳压器(LDO)的动态响应性能,提出了一种新型的缓冲器电路。通过引入该缓冲器,LDO的瞬态性能得到显著提高的同时,空载时的静态电流也大大减小。对缓冲器电路的工作原理进行了分析,指出通过降低缓冲器的...
美国ACE缓冲器技术样本pdf,美国ACE缓冲器技术样本
高速缓冲存储器详解,个人感觉写得比较详细,分享一下
今天介绍三态门(三态缓冲器)的工作原理,讲的很不错哦,喜欢的小伙伴快来看看。
一、在控制器中引用: use cache; 二、基本方法及使用 1、put() 键 值 有效时间(分钟) Cache::put('key1','val1',10); 2、add() 若key2不存在,则添加成功 否则,添加失败 Cache::add('key2','val2',20); 3、...