使用APC缓存PHP opcode
1. 关于版本
我的php版本是5.3.10 最开始使用 APC-3.1.8 编译成功,但是 php -m 得不到扩展 , 换成 APC-3.1.9 后解决。
2. 关于配置
apc.cache_by_default = 0 的时候 需要 filters 来匹配开启的文件 一般这两个是配套使用
apc.cache_by_default | 默认启用缓存。1表示“启用”,0表示“禁用” |
apc.filters | 根据逗号分隔的POSIX正则表达式判断文件需要缓存还是不需要缓存。以a+开头的正则 表达式将强制APC不缓存与此正则表达式匹配的任何文件。以a-开头的正则表达式将强制 APC缓存与此正则表达式匹配的任何文件 |
apc.stat | 启用或禁用APC对于所有请求PHP脚本是否有更改的检查。每次调用脚本时均会执行此 过程。如果禁用该设置,在对PHP脚本进行任意更改后均需要重新启动WEB服务器以 清除缓存并更改脚本内容。0=禁用,1=启用,默认1 |
apc.enabled | 启用或禁用APC缓存。0=禁用,1=启用,默认1 |
apc.shm_size | 设置APC允许使用的共享内存大小,此值以兆字节为单位 |
apc.shm_segments | 设置可用的共享内存段总数 |
apc.include_once_override | 启用或禁用include_once和require_once的优化。启用该设置时,可减少PHP内部函数进行的额外系统调用。0=禁用,1=启用,默认0 |
apc.optimization | 设置优化级别。0=禁用优化功能 |
apc.num_files_hint | 设置你认为需要缓存的文件数。默认值1000,如果不确定文件数,可以设置0 |
apc.ttl | 设置文件存储在缓存中的过期时间,以秒为单位。 |
apc.write_lock | 开启该设置将强制单个进程缓存特定的脚步。适用于必须缓存多个文件的大流量WEB服务器或应用程序 |
3. cli 模式下的变量缓存 开启
apc.enable_cli = 1
4. 性能 yii框架 xhprof测试结果
没有开启之前是这样
YiiBase::autoload Inc: 29.730 ms (18.1%) Excl: 0.867 ms (0.5%) 35 total calls
开启之后 同样 35次load操作
YiiBase::autoload Inc: 6.477 ms (5.5%) Excl: 0.454 ms (0.4%) 35 total calls
耗时明显降低
5. 变量缓存
$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));
6. 进程通信工具
尝试了下 多进程时的APC变量缓存, 主进程是可以和子进程共享的,说明 apc可以作为进程通信工具, 这点太赞了。