介绍
XCache是一种新兴的php缓存器,主要为WIN环境下IIS开发,经过本人测试,在Windows下效果比同类软件强很多。 同类PHP缓存加速器软件eaccelerator在LINUX下表现出色,但是在IIS环境下就动不动出现内存出错,所以如果服务器是IIS的,建议使用XCache!
安装与配置:
首先下载XCache,网址为:
http://xcache.lighttpd.net/wiki/Release-1.2.2
为Windows预编译的二进制
下载后解压,把Release_Ts文件夹里的php_xcache.dll
放在php.ini中指定extension_dir文件夹中(直接用extension无法初始化,
($extension_dir)请改成你的PHP的EXT所在目录。比如我的是d:\host\php\ext\php_xcache.dll, php.ini一般在
C:\WINDOWS目录下)
下面开始配置,在你下载的Xcache解压文件中找到xcache.ini或xcache-zh-gb2312.ini,下面我们来配置Xcache的一些参数。
例:
复制内容到剪贴板
代码:
;; 本文件只是例子, 请在 php.ini 里设置以便生效
[xcache-common]
;; Windows 系统例子:
zend_extension_ts = "d:\host\php\ext\php_xcache.dll"
[xcache.admin]
xcache.admin.enable_auth = Off
xcache.admin.user = "admin"
; xcache.admin.pass = md5($您的密码)
xcache.admin.pass =123456
[xcache]
; 这里的多数选项仅在 ini 里可以修改, 这里列出的都是默认值, 除非另外说明
; select low level shm/allocator scheme implemenation
xcache.shm_scheme = "mmap"
; 禁用: xcache.size=0
; 启用: xcache.size=64M 之类 (任意>0的值) 同时请注意您的系统 mmap 上限
xcache.size = 64M
; 建议设置为 cpu 数 (cat /proc/cpuinfo |grep -c processor)
xcache.count = 2
; 只是个参考值, 您可以放心地存储多于此数量的项目(php脚本/变量)
xcache.slots = 64K
; 缓存项目的 ttl, 0=永久
xcache.ttl = 1800
; 扫描过期项目的时间间隔, 0=不扫描, 其他值以秒为单位
xcache.gc_interval = 1800
; 同上, 只是针对变量缓存设置
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8K
; 默认, 允许 ini_set()
xcache.var_ttl = 0
; 最大ttl值
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
; 仅测试用
xcache.test = Off
; /dev/zero 时无效
xcache.readonly_protection = Off
; 对于 *nix 系统, xcache.mmap_path 是文件路径而不是目录, (可以不存在 但是必须能创建).
; 如果您期望启用 ReadonlyProtection, 可以使用类似 "/tmp/xcache"
; 2 个 php 组不会共享同一个 /tmp/xcache
; 对于 Win32 系统, xcache.mmap_path=匿名MAP名字, 不是文件路径. 建议使用 XCache 字眼避免跟其他软件冲突
xcache.mmap_path = "/dev/zero"
; 仅用于 *nix 系统
; 设置为空(禁用) 或者类似 "/tmp/phpcore/"
; 注意该目录应该能被 php 写入文件 (跟 open_basedir 无关)
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
; 如果 xcache.coveragedump_directory 设置为空则本设置自动为 Off
xcache.coverager = Off
; 请确保本目录能被 coverage viewer 脚本读取 (注意 open_basedir)
; 依赖于 xcache.coverager=On
xcache.coveragedump_directory = ""
索引:
[xcache-common]
zend_extension_ts = "($extension_dir)\php_xcache.dll"
[xcache.admin]
xcache.admin.enable_auth = Off
xcache.admin.user = "username"
xcache.admin.pass = "1"
[xcache]
xcache.shm_scheme ="mmap"
xcache.size =64M
xcache.count =2
xcache.slots =64K
xcache.ttl =1800
xcache.gc_interval =1800
xcache.var_size =8M
………………
需要修改的值已经用蓝色标出,说明如下:
xcache.admin.enable_auth XCache后台是否需要验证(这个后台在刚才下载的XCache的admin目录中,可以自由处理)
xcache.admin.user XCache后台登陆用户名
xcache.admin.pass XCache后台登陆密码
xcache.size XCache的内存缓存大小,普通网站建议设置为64MB,如果是IDC服务器,可以设置成256MB,网站数量越多就设置越大
xcache.count 设置为CPU的数量(双核算2个,比如我的是两个双核Xeon 3.0,就设置为4)
xcache.var_size
xcache.var_count 跟上两条一样
xcache.mmap_path 共享内存标识名,尽量用xcache,避免跟其它软件冲突
xcache.optimizer 优化器,如果没安装Zend可以开启。
把刚才我们配置的信息复制拷贝到
在pin.ini文件最下边[Zend]前
复制内容到剪贴板
代码:
[Zend]
zend_extension_manager.optimizer_ts="d:/host/zend/lib/Optimizer-3.3.0"
zend_extension_ts="d:/host/zend/lib/ZendExtensionManager.dll"
,然后保存
至此配置完毕,重新启动IIS即可。 然后写个phpinfo();检测一下XCACHE是否运行
<?php
phpinfo();
?>
疑难解答
1、为什么不用extension,因为这个发行版的xcache的接口是ZEND_API,直接用extension无法初始化,($extension_dir)请改成你的PHP的EXT所在目录。比如我的是d:\host\php\ext\php_xcache.dll)
如果是PHP5.3.2有可能需要换成
zend_extension= "($extension_dir)\php_xcache.dll" 或
extension= "($extension_dir)\php_xcache.dll"
2、phpinfo()中显示没有加载php_xcache.dll
检查php_xcache.dll的NTFS权限是否正确,需要给网站用户(或者可以用Guests)只读权限。
3、出现php内存错误
使用了extension调用php_xcache.dll,请尝试使用zend_extension_ts。
4、打开网页没有响应,出现错误 Fatal error: [Zend Optimizer] Zend Optimizer *** is incompatible with XCache 1.2.2
这是因为安装了Zend导致,解决方法很简单,把调用php_xcache.dll的zend_extension_ts提到调用zend的前面。如:
zend_extension_manager.optimizer_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0"
zend_extension_ts="C:\php\ext\php_xcache.dll"
zend_extension_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll"
可能需要到的文件,本站已整理