6

我在整个网络上搜索了包括XCache 网站在内的文档。

我是 PHP 操作码缓存和 XCache 的新手。我想解释一下 XCache 的工作原理。我知道它存储已编译的 php 代码,因此不需要每次都重新编译。但是 XCache 是如何知道 php 代码何时更新而导致缓存过期的呢?

我如何知道是否需要清除缓存?

XCache 是否编译和缓存服务器上的所有php 代码?如果是这样可以配置吗?

什么是木屐?OOM?我在 XCache Admin 页面界面中看到了这两个的大量数字。

在代码覆盖率查看器中...百分比是什么意思?这是已缓存代码的百分比吗?命中是否意味着已从缓存中读取的编译代码行数?行数是指代码的总行数吗?ToDo 列有什么用?为什么有些行以红色突出显示?

如果有帮助,我正在使用 PHP 5.3.2、XCache 1.3.0 和 Ubuntu 10.04。

4

1 回答 1

7

缓存

通过将 PHP 脚本的编译状态缓存到 shm (RAM) 中并直接使用 RAM 中的编译版本来消除 PHP 脚本的编译时间,从而优化性能。

根据使用PHP 5.5.3 和 Xcache 3.1.0的观察,我可以推断出:

缓存器

该模块处理两种缓存OpcodeVariable

Opcode缓存被设计为一个简单的插件。您无法自定义它决定缓存的方式,只是多少:

  • xcache.count设置指的是缓存线程的数量,并与您想要使用的处理器内核数量相关——这个想法是多线程应该是最快的,但不能保证,所以自己试验一下
  • 作为指导,有效计数值将是 2^n,例如 1、2、4、8 — 0 将禁用缓存器,其他值将四舍五入为最接近的有效值
  • xcache.size设置是指所有缓存线程的聚合内存。因此,每个线程都会获得大致size/count的内存量
  • OOM aka Out of Memory,是指缓存线程达到其最大大小的事件

变量缓存需要在您的应用代码中使用简单的 get/set api。使用xcache.var_sizexcache.var_count(类似于 Opcode 设置)启用它后,您可以xcache_set($var1)xcache_get($var1)脚本中使用它。

失效

xcache.stat设置控制是否检查文件在缓存后是否被修改

  • 当设置为打开时,文件会被检查并重新缓存
  • 当设置为Off时,检查将保留第一个缓存版本,只要过期时间,这可以通过限制磁盘 i/o 来提高性能

在您的开发环境中,最好将其保持打开,这样您就可以不断更新和检查您的代码——否则您必须刷新缓存才能看到文件的更新。

法拉盛

有一个 Web 管理界面,允许您刷新特定的缓存。网络管理员使用 php api: xcache_clear_cache(…)

由于缓存是基于 RAM 的,只要服务器重新启动,缓存应该被刷新。

到期

缓存项根据xcache.ttlxcache.var_ttl分别控制缓存项生存的秒数过期(0 是不确定的,默认值)。

覆盖者

覆盖模块,又名代码覆盖,有点神秘。根据FeatureList,它似乎是一个旨在为临时管理/测试情况启用的诊断工具:

  • Coverager + 现实生活中的测试用例框架,这包括:[TOSHARE]
    • 现实生活中的测试用例框架,一个带有真实浏览器的控制脚本。您必须编写测试用例。
    • 内置 Coverager + 来自网络的查看器,以查看您测试了多少脚本。
  • testcase+Coverager 只是帮助您确保所有现实生活中的 php web 应用程序在以下情况下正确运行
    • 启用 XCache 后
    • 将 php4 升级到 php5 后
    • 将 php4/5 升级到 php6 后
于 2013-11-20T03:54:22.903 回答