海浪家园

XCache配置参数

一、配置

1、分层:Xcache将缓存对象分为两类:php代码和php变量,前者在xcache.ini中只是单纯的xcache前缀,后者则用xcache_var前缀,两个对象可以独立调整。

2、配置说明:

xcache.admin.user string
//”验证名.”
xcache.admin.pass string
//”md5 后的验证密码, 亦即 md5(您的密码), 留空则禁用管理页面.”
xcache.test string
//”仅在测试一些功能的时候才启用. 如果您不知道这个功能的作用, 则您不需要知道.”
xcache.coredump_directory string
//”设置在 crash (SIGSEGV/SIGABRT) 时保存 core dump 文件的路径. 留空则禁止, 或者设置为类似 “/tmp/phpcore/” 的目录. 确保这个路径可以被 php 写入文件. (与 open_basedir 无关).”
xcache.admin.enable_auth string
//”如果你打算自己处理验证, 用这个选项禁止 HTTP 验证功能. 值得注意的是任意 vhost 用户都可以安装一个 XCache admin 页面, 如果禁止了内建 HTTP 验证, 则他们亦不需要权限即可访问管理页面. 出于安全考虑, 您应该尽量考虑保留 XCache 内建验证功能, 针对 XCache admin 页面特定地址取消网页服务器的 mod_auth //这个选项仅在 1.2.x 系列有作用, 起始版本 1.2.1″

/* XCache Cacher */

xcache.cacher boolean
// 使用/不使用 opcode 缓存器. xcache.size = 0 时无效.
xcache.size int
//0 禁止, 非 0 则启用缓存器. 请注意您系统所允许的 mmap 最大值.
xcache.count int
//指定将 cache 切分成多少块. 参考 SplittedCache,官方文档是说一般跟CPU的数目相同,实际操作中,跟fcgi-php的数目相同???(没有求证,因为设置为CPU的数目,比如说2,则只有两个进程的内存增加,每个php-cgi的内存占用不平衡。)
xcache.slots size
//只是作为 hash 槽个数的参考值, 您可以放心地缓冲超过这个个数的项目.
xcache.ttl seconds
//设置缓冲项目的 Ttl (Time To Live) 值, 0=永不过期.
xcache.gc_interval seconds
//检查过期项目, 回收内存空间的间隔.
xcache.var_size int
xcache.var_count int
xcache.var_slots size
xcache.var_gc_interval seconds
//同上, 不过用于数据缓冲而不是 opcode 缓冲.
xcache.var_ttl seconds
//xcache_(get|set|inc|dec) 等的默认 ttl 值.
xcache.var_maxttl seconds
//最大 ttl 值, 程序无法指定超过这个最大值的 ttl.
xcache.readonly_protection boolean
//如果启用了 ReadonlyProtection, 将会略微降低性能, 但是会提高一定的安全系数. 这个选项对于 xcache.mmap_path = /dev/zero 无效.
xcache.mmap_path string
对于 *nix, xcache.mmap_path 是 文件路径, 不是目录. 对于 Win32, xcache.mmap_path //只是匿名的 map 名, 不是实际的文件路径. 如果您要启用 ReadonlyProtection 请用类似 “/tmp/xcache” 的路径. 2 组 php 不该共用同一个路径 (/dev/zero 除外).

/* XCache Optimizer */
//Name Default Changeable

xcache.optimizer boolean
//启用优化器 (目前无效).

3、最重要的参数是xcache.var_size和xcache.size,可以根据内存设置,但是在top中,内存占用直接多出来很多,比如都设置了为256M,则php-cgi的占用就在530M左右,基本的php大约10-15M,加上512M,就快到530了。

4、admin配置后,可以使用xcache自带的admin程序。

二、函数说明:

1、数据函数(http://xcache.lighttpd.net/wiki/XcacheApi)
mixed xcache_get(string name)
bool xcache_set(string name, mixed value [, int ttl])
bool xcache_isset(string name)
bool xcache_unset(string name)
bool xcache_unset_by_prefix(string prefix)
//低版本没有这个函数,使用之前要测试一下

int xcache_inc(string name [, int value [, int ttl]])
//自增函数,value为步长,如果没有初始化,则默认为零,ttl为过期时间

int xcache_dec(string name [, int value [, int ttl]])
//自减函数,同上

注意:xcache不能存放对象、资源等内容。

2、管理函数:
int xcache_count(int type)
//type值定义为宏,返回值为把指定的共享内存分为多少份,见xcache.count配置参数
XC_TYPE_PHP: Cache Type = php opcode XC_TYPE_VAR: Cache Type = variable data array xcache_info(int type, int id)
//返回值:为数组:

array(16) {
[“slots”]=> //slots值
int(65536)
[“compiling”]=>
int(0)
[“misses”]=> //失误
int(0)
[“hits”]=> //命中
int(0)
[“clogs”]=>
int(0)
[“ooms”]=>
int(1)
[“errors”]=> //错误
int(0)
[“cached”]=> //缓存
int(78)
[“deleted”]=> //
int(0)
[“gc”]=>
int(6)
[“hits_by_hour”]=> //最近24小时的命中数
array(24) {
[0]=>
int(0)
[1]=>
int(0)
[2]=>
int(0)
[3]=>
int(0)
[4]=>
int(0)
[5]=>
int(0)
[6]=>
int(0)
[7]=>
int(0)
[8]=>
int(0)
[9]=>
int(0)
[10]=>
int(0)
[11]=>
int(0)
[12]=>
int(0)
[13]=>
int(0)
[14]=>
int(0)
[15]=>
int(0)
[16]=>
int(0)
[17]=>
int(0)
[18]=>
int(0)
[19]=>
int(0)
[20]=>
int(0)
[21]=>
int(0)
[22]=>
int(0)
[23]=>
int(0)
}
[“hits_by_second”]=> //最近5秒钟的命中数
array(5) {
[0]=>
int(0)
[1]=>
int(0)
[2]=>
int(0)
[3]=>
int(0)
[4]=>
int(0)
}
[“size”]=> //共享内存大小,仅此count的,不是所有
int(134217728)
[“avail”]=> //可用内存大小
int(125642656)
[“can_readonly”]=>
bool(false)
[“free_blocks”]=>
array(1) {
[0]=>
array(2) {
[“size”]=> //空闲块链首
int(125642656)
[“offset”]=>
int(8575064)
}
}
}

array xcache_list(int type, int id)
//返回值:

array(2) {
[“cache_list”]=> //缓存列表
array(78) {
[0]=>
array(7) {
[“size”]=> //大小
int(107952)
[“refcount”]=> //引用次数
int(0)
[“hits”]=> //命中次数
int(0)
[“ctime”]=> //创建时间
int(1306710407)
[“atime”]=> //存在时间
int(1306710407)
[“hvalue”]=>
int(1257)
[“name”]=> //名称
string(9) “my_var100”
}
[1]=> ……

[“deleted_list”]=> //删除列表
array(0) {
}
}

void xcache_clear_cache(int type, int id)
string xcache_coredump(int op_type)


三、

Cache 帮助

槽: Hash 槽个数, 对应 php.ini 里的设置
大小: 共享内存区大小, 单位: 字节
剩余: 可用内存, 对应共享内存区的剩余内存字节数
%: 百分比, 条状显示可用内存的比例
清除: 清除按钮, 点击按钮清除对应共享内存区的数据
编译中: 编译标记, 当共享内存区正在编译 php 脚本时标记为 “yes”
命中: 共享内存命中次数, 命中=从该共享内存载入php或者变量
错过: 共享内存错过次数, 错过=请求的php或者变量并不在该共享内存内
阻塞: 编译阻塞跳过, 阻塞=当需该共享内存区负责编译时, 其他进程/现成无法访问此共享内存. 跳过=XCache 自动判断阻塞的共享内存区自动跳过阻塞等待, 直接使用非共享内存方式继续处理请求
内存不足: 内存不足次数, 显示需要存储新数据但是共享内存区内存不足的次数. 如果出现太频繁请考虑加大配置中的 xcache.size 或者 xcache.var_size
错误: 编译错误, 显示您的脚本被编译时出错的次数. 如果您发现这个数字不断增长, 您应该检查什么脚本产生错误. 参考 ini.error-log and ini.display-errors
保护: 显示该 Cache 是否支持并启用 readonly_protection
缓冲: 共享内存于该共享内存区的项目条数
待删: 共享内存区内将要删除的项目 (已经删除但是还被某些进程占用)
GC: 垃圾回收的倒计时
空闲块: 共享内存区内的空闲内存块

List 帮助

项目: 项目名或者文件名
命中: 该项目被命中的次数 (从共享内存区载入)
引用数: 项目依然被其他进程占据的引用次数
大小: 项目在共享内存里占用字节数
源大小: 源文件大小
修改: 源文件最后修改时间
设备: 源文件所在设备ID
Inode:源文件的inode
访问: 最后访问该项目的时间
创建: 该项目被创建于共享内的时间

退出移动版