FRAPI 的缓存机制

使用FRAPI有一段时间了,中文文档和资料都比较少,因此就翻译了这篇,也算为开源做点贡献吧

FRAPI 可以使用 PHP 的各种缓存机制。FRAPI 内置这些接口,只要修改一行代码,就能充分利用您喜欢的缓存机制。

本中文文档翻译自英文资料,介绍了如何配置这些缓存接口:

基础知识

要使用您选择的缓存接口,需要手工修改 FRAPI 目前仅有的一行配置,配置文件位于 FRAPI_PATH/src/frapi/custom/AllFiles.php。打开文件后可以看到,仅有的常量定义是 FRAPI_CACHE_ADAPTER。您可以设置为 apc, memcached, redis, wincache, zenddisk, zendshm 或者 dummy。

在 FRAPI 以后的版本中,会在管理界面让用户指定缓存接口和服务器。

使用 APC 缓存机制

FRAPI 把 PHP 的可选缓存 — APC — 作为默认的缓存接口,也就是下载 FRAPI 后,默认的 FRAPI_CACHE_ADAPTER 常量是设置为 apc

如果您还没安装 APC 但又想用 APC,可以参阅 这里的说明。

使用 Memcached 缓存机制

如果您喜欢 Memcached 缓存机制,可以使用 FRAPI 的 “memcached” 缓存接口。memcached 缓存接口默认只连接本地主机,目前 FRAPI 还不能使用 memcached 集群,不久就会实现这个功能。

可以手工在模型中连接到 memcached 服务器集群:

    $options = array(
        'servers' => array(
            '192.168.2.1' => 11211,
            '192.168.2.2' => 11211,
        )
    );

    $cache = Frapi_Cache::getInstance('memcached', $options);
    $cache->add('foo', 'bar');
    echo $cache->get('foo');
    $cache->delete('foo');

FRAPI memcached 接口使用 PHP memcached 扩展。要安装 memcached 扩展,请参阅 这里的说明。

安装扩展并重启服务器后,设置 FRAPI_CACHE_ADAPTER 常量为 memcached,FRAPI 会在 127.0.0.1 和端口 11211 上使用 Memcached 服务器。

也可以使用 memcache 扩展。要使用 memcache 接口,需要修改 FRAPI_CACHE_ADAPTER 常量并设置为 memcache

目前不能在管理界面设置集群信息,但是已在计划之中。如果要修改默认服务器的位置,可以修改文件  FRAPI_PATH/src/frapi/library/Frapi/Cache/Adapter/Memcached.php 指向您自己的服务器。这个功能以后会加入管理界面。

使用 Redis 缓存机制

FRAPI Redis 缓存接口使用owlient 的 phpredis 扩展。如果您要安装这个扩展,请参阅 这里的说明。

安装扩展并重启服务器后,设置 FRAPI_CACHE_ADAPTER 常量为 redis,FRAPI 会通过 127.0.0.1 和 端口 6379 使用 Redis 服务器。

目前不能在管理界面设置集群信息,但是已在计划之中。如果要修改默认服务器的位置,可以修改文件 FRAPI_PATH/src/frapi/library/Frapi/Cache/Adapter/Redis.php 指向您自己的服务器。这个功能以后会加入管理界面。

使用 WinCache 缓存机制

要使用 WinCache 缓存机制,首先要 安装 WinCache 扩展。

安装扩展并重启服务器后,设置 FRAPI_CACHE_ADAPTER 常量为 wincache,FRAPI 会使用 WinCache 缓存机制。

使用 Zend Disk 缓存机制

使用 Zend 服务器,并且程序员可以访问 Zend Disk 缓存机制。要充分利用扩展的所有功能,使用 Zend 服务器的程序员唯一要做的就是设置 FRAPI_CACHE_ADAPTER 常量为 zenddisk,这样 FRAPI 会自动使用 zenddisk 缓存机制。

使用 Zend Shm 缓存机制

使用 Zend 服务器,并且程序员可以访问 Zend Shm 缓存机制。要充分利用扩展的所有功能,使用 Zend 服务器的程序员唯一要做的就是设置 FRAPI_CACHE_ADAPTER 变量为 zendshm,这样 FRAPI 会自动使用 zendshm 缓存机制。

不使用缓存

我们强烈建议不要这么做,因为 FRAPI  配置文件通常有缓存。但是,没有缓存机制的程序员,如果只是测试或体验 FRAPI,可以设置 FRAPI_CACHE_ADAPTER 常量为 dummy,FRAPI 会与有缓存一样执行但不实际使用缓存。

申请其它的接口

如果您需要其它的缓存接口,可以在 github 上提供补丁 。如果您自己没有时间或兴趣开发需要的接口,可以发邮件到 frapi-dev 邮件列表上提出申请 — 如果可能,请给出相关文档链接。