通过将 PHP 脚本的编译状态缓存到 shm (RAM) 中并直接使用 RAM 中的编译版本来消除 PHP 脚本的编译时间,从而优化性能。
根据使用PHP 5.5.3 和 Xcache 3.1.0的观察,我可以推断出:
缓存器
该模块处理两种缓存Opcode和Variable。
Opcode缓存被设计为一个简单的插件。您无法自定义它决定缓存的方式,只是多少:
- xcache.count设置指的是缓存线程的数量,并与您想要使用的处理器内核数量相关——这个想法是多线程应该是最快的,但不能保证,所以自己试验一下
- 作为指导,有效计数值将是 2^n,例如 1、2、4、8 — 0 将禁用缓存器,其他值将四舍五入为最接近的有效值
- xcache.size设置是指所有缓存线程的聚合内存。因此,每个线程都会获得大致
size/count
的内存量
- OOM aka Out of Memory,是指缓存线程达到其最大大小的事件
变量缓存需要在您的应用代码中使用简单的 get/set api。使用xcache.var_size和xcache.var_count(类似于 Opcode 设置)启用它后,您可以xcache_set($var1)
在xcache_get($var1)
脚本中使用它。
失效
xcache.stat设置控制是否检查文件在缓存后是否被修改:
- 当设置为打开时,文件会被检查并重新缓存
- 当设置为Off时,检查将保留第一个缓存版本,只要过期时间,这可以通过限制磁盘 i/o 来提高性能
在您的开发环境中,最好将其保持打开,这样您就可以不断更新和检查您的代码——否则您必须刷新缓存才能看到文件的更新。
法拉盛
有一个 Web 管理界面,允许您刷新特定的缓存。网络管理员使用 php api: xcache_clear_cache(…)
。
由于缓存是基于 RAM 的,只要服务器重新启动,缓存应该被刷新。
到期
缓存项根据xcache.ttl
并xcache.var_ttl
分别控制缓存项生存的秒数过期(0 是不确定的,默认值)。
覆盖者
覆盖模块,又名代码覆盖,有点神秘。根据FeatureList,它似乎是一个旨在为临时管理/测试情况启用的诊断工具:
- Coverager + 现实生活中的测试用例框架,这包括:[TOSHARE]
- 现实生活中的测试用例框架,一个带有真实浏览器的控制脚本。您必须编写测试用例。
- 内置 Coverager + 来自网络的查看器,以查看您测试了多少脚本。
- testcase+Coverager 只是帮助您确保所有现实生活中的 php web 应用程序在以下情况下正确运行
- 启用 XCache 后
- 将 php4 升级到 php5 后
- 将 php4/5 升级到 php6 后