QeePHP 中的缓存服务
时间:2008-04-12 来源:qeeify
对于 Web 2.0 应用,缓存是一个非常重要的组成功能。因此 QeePHP 提供了灵活、可靠、高效的缓存服务。
通过一个统一的接口,开发者在缓存数据时,可以指定要使用的缓存服务。例如对于极高性能要求的数据,可以使用 QCache_Memcached 缓存服务。该服务使用 memcached 作为数据存储容器。而对于 RSS 等数据,可以使用 QCache_File 缓存服务,在文件系统中存储被缓存的数据。
缓存接口
QeePHP 的缓存接口由下列三个方法组成:
- getCache($id, array $policy = null, $backend = null);
- setCache($id, $data, array $policy = null, $backend = null);
- removeCache($id, array $policy = null, $backend = null);
提示:这三个方法都是类“Q”的静态方法,而不是全局函数。
典型的使用方法
// 尝试读取缓存的数据
if (!$data = Q::getCache($cache_id)) {
$data = .... // 构造数据
// 指定缓存策略
$policy = array(
'life_time' => 1800, // 缓存有效时间为 1800 秒
'serializ' => true, // 自动将数据序列化后再缓存
);
// 将数据缓存起来
Q::setCache($cache_id, $data, $policy);
}
从方法的接口和使用方法看,QeePHP 中缓存操作与 FleaPHP 中最大的不同就是可以指定缓存策略和要使用的缓存服务。
缓存策略
对于不同的缓存服务,具有不同缓存策略选项。例如 QCache_File 就包括下列缓存策略选项:
$policy = array(
/**
* 缓存有效时间
*
* 如果设置为 0 表示缓存总是失效,设置为 null 则表示不检查缓存有效期。
*/
'life_time' => 900,
/**
* 自动序列化数据后再写入缓存
*
* 可以很方便的缓存 PHP 变量值(例如数组),但要慢一点。
*/
'serialize' => false,
/**
* 编码缓存文件名
*
* 如果缓存ID存在非文件名字符,那么必须对缓存文件名编码。
*/
'encoding_filename' => true,
/**
* 缓存目录深度
*
* 如果大于 1,则会在缓存目录下创建子目录保存缓存文件。
* 如果要写入的缓存文件超过 500 个,目录深度设置为 1 或者 2 较为合适。
* 如果有更多文件,可以采用更大的缓存目录深度。
*/
'cache_dir_depth' => 0,
/**
* 创建缓存目录时的标志
*/
'cache_dir_umask' => 0700,
/**
* 缓存目录(必须指定)
*/
'cache_dir' => null,
/**
* 读取和写入文件时锁定文件(更安全),避免读取或写入破损的缓存文件
*/
'file_locking' => true,
/**
* 是否在读取缓存内容时检验缓存内容完整性
*/
'test_validity' => true,
/**
* 检验缓存内容完整性的方式
*
* crc32 速度较快,而且安全。md5 速度最慢,但最可靠。strlen 速度最快,可靠性略差。
*/
'test_method' => 'crc32',
);
在保存缓存时,QeePHP 会记录每一个缓存项的策略。因此利用同一个缓存服务,对不同的数据采用不同的缓存策略。例如不同的缓存项指定不同的缓存有效期。
大部分缓存策略选项都只需要在创建缓存时指定,仅有个别选项才需要在读取时也指定,例如 encoding_filename 选项。
使用不同的缓存服务
QeePHP 默认的缓存服务是 QCache_File, 由应用程序设置 default_cache_backend 指定。如果在应用程序中要使用其他缓存服务,有两个途径。
方法一:使用缓存接口的 $backend 参数指定要使用的缓存服务,例如:
$backend = 'QCache_Memcached';
$data = Q::getCache($cache_id, null, $backend);
方法二:直接构造缓存服务对象,然后操作缓存,例如
$cache = Q::getSingleton('QCache_File');
$data = $cache->get($cache_id);
原文地址:http://qeeify.com/index.php/2008/03/19/cache-in-qeephp.html
更多信息,请访问 FleaPHP/QeePHP 开源开发框架官方网站:
http://www.fleaphp.org/
。
相关阅读 更多 +
排行榜 更多 +