文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>QeePHP 中的缓存服务

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/



相关阅读 更多 +
排行榜 更多 +
粉末星战 v1.0.0 安卓版

粉末星战 v1.0.0 安卓版

休闲益智 下载
粉末星战 v1.0.0 安卓版

粉末星战 v1.0.0 安卓版

休闲益智 下载
火线反恐部队 v1.2 安卓版

火线反恐部队 v1.2 安卓版

飞行射击 下载