xcache是​​如何工作的?代码覆盖?木屐?奥姆斯?

时间:2012-11-17 14:58:50

标签: php xcache opcode-cache

我已经在网上搜索了XCache website上的文档。

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

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

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

什么是木底鞋?奥姆斯?我在XCache管理页面界面中看到了这两个数字的大数字。

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

我使用PHP 5.3.2,XCache 1.3.0和Ubuntu 10.04(如果有帮助的话)。

1 个答案:

答案 0 :(得分:7)

Xcache

  

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

基于使用 PHP 5.5.3和Xcache 3.1.0 的观察结果,这是我可以推断的:

cacher的

此模块处理两种缓存 Opcode 变量

操作码缓存旨在成为一个简单的插件。你无法自定义它决定缓存的方式,只需要多少:

  • xcache.count 设置是指多少缓存线程并与您要使用的处理器核心数相关联 - 我们的想法是multithreading应该是最快的,但没有保证如此自我实验
  • 作为指导原则,有效计数值为2 ^ n,如1,2,4,8 - 0将禁用cacher,其他值将四舍五入到最接近的有效值
  • xcache.size 设置是指所有缓存线程的聚合内存。因此,每个线程大致size/count内存量
  • OOM 又名Out of Memory,指的是缓存线程达到最大尺寸的事件

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

失效

xcache.stat 设置控制是否检查文件是否已被缓存,因为它已被缓存:

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

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

冲洗

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

由于缓存是基于RAM的,所以当服务器重新启动时,应该刷新缓存。

过期

缓存项目根据xcache.ttlxcache.var_ttl到期,分别控制缓存项目的生存秒数(0是无限期和默认值)。

Coverager

coverager模块,又名Code Coverage,有点神秘。根据{{​​3}},它似乎是一个旨在为临时管理/测试情况启用的诊断工具:

  
      
  • Coverager +真实生活测试用例框架,包括:[TOSHARE]   
        
    • 现实生活中的testcase框架,一个带有真实浏览器的控制脚本。你必须编写测试用例。
    •   
    • 内置Coverager +来自网络的查看器,查看您测试了多少脚本。
    •   
  •   
  • testcase + Coverager只是帮助您确保所有真实的php Web应用程序正常运行时   
        
    • 启用XCache后
    •   
    • 将php4升级到php5后
    •   
    • 将php4 / 5升级到php6后
    •   
  •