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)是一种特殊的存储设备,它的设计目标是解决计算机系统中处理器(CPU)速度与主存储器(Main Memory)速度之间存在的显著差异问题。由于CPU的运算速度远超主存的访问速度,Cache的存在可以极...
高速缓冲存储器Cache的原理、设计及实现 高速缓冲存储器 Cache 的原理、设计及实现是电脑系统中的一种重要技术,它可以提高 CPU 的工作效率,减少 CPU 与内存之间的速度差异。 Cache 的工作原理基于程序访问的局部...
寄存器和高速缓冲储存器(Register and Cache)
- **逻辑门**:如非门(NOTGate)、缓冲器(Buffer)、与门(ANDGate)等,用于执行基本的逻辑运算。 - **多路复用器(Multiplexer)** 和 **解多路复用器(Demultiplexer)**:用于选择信号路径。 - **加法器(Adder)**:如...
PC 系统高速缓冲存储器 Cache 的原理、设计及实现 Cache 的原理是基于程序访问的局部性,即程序在一个较短的时间间隔内产生的地址往往集中在存储器逻辑地址空间的很小范围内。因此,可以在主存和 CPU 之间设置一个...
Cache的结构通常包括三个主要部分:Cache存储体、地址转换部件和替换部件。Cache存储体负责存储数据块,地址转换部件通过目录表实现主存地址到Cache地址的转换,而替换部件则根据替换策略管理数据块的进出。 地址...
高速缓冲存储器(Cache)是计算机系统中一种关键的组件,它位于中央处理器(CPU)与主存储器之间,起到加速数据传输的作用。由于主存储器的访问速度相对较慢,而CPU的操作速度非常快,Cache的引入就是为了弥补这种...
液压缓冲器的优点在于缓冲过程更平稳,能提供更大的缓冲力,适用于高速电梯。但其结构复杂,对维护和油品质量要求较高。 在电子技术的应用中,电梯缓冲器垫座与电梯控制系统紧密关联。现代电梯控制系统采用先进的微...
### 锁存器和缓冲器的意义 #### 一、锁存器的概念与作用 锁存器是一种能够存储一位二进制数据的数字电子元件。它主要用于维持数据在接口电路输出端的一段时间内的稳定性,确保数据不会因为外部环境的变化而发生...
计算机高速缓冲存储器(Cache)是计算机系统中的一种高速存储器,主要用来存储频繁访问的数据,以提高计算机系统的性能。高速缓冲存储器的体系结构分析是计算机专业领域中一个重要的研究方向,本文将对高速缓冲...
在计算机系统中,Cache是一种高速缓冲存储器,用于暂时存储CPU频繁访问的内存数据,以减少主存与CPU之间的通信延迟。全相联Cache( Fully-Associative Cache)是Cache组织方式的一种,与直接映射Cache和组相联Cache...
Web Cache Illuminator 使用网络高速缓冲存储器文件夹创建文件清单命名;也显示被每个网页给的标题的创建者。也有内置的查看和删除向导,所以你有选择性地删除文件。诸如排序依据目录的能力的选择标题或者记载日期,...
采用一级cache设计对五级流水线CPU进行优化,Cache的工作原理是基于程序访问的局部性。根据程序的局部性原理,可以在主存和CPU通用寄存器之间...这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。
掌握Cache的功能结构与访问控制策略 培养Linux下的性能测试方法与技巧 深入理解Cache组成结构对C程序性能的影响 X64 CPU;2GHz;2G RAM;256GHD Disk 以上 Windows7 64位以上;VirtualBox/Vmware 11以上;Ubuntu ...
2. **速度与带宽**:根据应用需求选择适当的缓冲器,高频率应用可能需要高速缓冲器,而低速应用则可以选择低功耗型号。 3. **驱动能力**:确定缓冲器需要驱动的负载大小,以选择具有足够驱动电流的缓冲器。 4. **...
- 多缓冲:使用多个缓冲区进行交替操作,实现数据的无缝交换,减少等待时间。 - 数据并行:同时对多个缓冲区进行操作,提高处理速度。 4. **缓冲区同步**: - 事件等待:通过设置和等待特定的GPU事件来确保数据...
【机车车辆缓冲器技术的进展】 缓冲器作为机车车辆的重要组成部分,主要负责连接、牵引和缓冲的作用,对列车运行的平稳性有着至关重要的影响。缓冲器通常由车钩、缓冲器和车钩复原装置三部分构成。常见的缓冲器类型...
环形缓冲器在频发事件中的应用:深入解析与实践 在现代电子设备与系统设计中,单片机(MCU)的应用日益广泛,尤其是在工业控制、消费电子、汽车电子等领域。然而,随着应用场景的复杂性和实时性要求的提高,单片机...