介绍
XCache是一种新兴的php缓存器,主要为WIN环境下IIS开发,经过本人测试,在Windows下效果比同类软件强很多。 同类PHP缓存加速器软件eaccelerator在LINUX下表现出色,但是在IIS环境下就动不动出现内存出错,所以如果服务器是IIS的,建议使用XCache!
实际测试效果如下(非科学方法):
- 原网页平均执行时间: 0.13 秒
- 加速后网页平均执行时间: 0.03秒
- 原CPU占用率: 15% - 60%
- 加速后CPU占用率: 3% - 30%
复制代码
可以看出,使用这个加速器可以很大程度的降低CPU占用(但会造成更多的内存占用),并使网页执行时间缩短。具体原理不介绍了,网上有很多。
由于其他同类软件对Windows的支持不够好,所以选用XCache。
网上很多说明都不够详细,所以给大家写一篇。
安装与配置:
首先下载XCache,网址为:
http://xcache.lighttpd.net/wiki/Release-1.2.2
下载
目前稳定版为1.2.2,另外最新版为2.0.x,但是仍在测试中,不建议使用
需要下载跟你php版本匹配的binaries for Windows ,我下载的是XCache-1.2.2-php-5.2.5-Win32(不知道自己php的,进入discuz!x 后台--首页---中间位置 系统信息---服务器系统及 PHP 见图)
下载后解压,把Release_Ts文件夹里的php_xcache.dll
php_xcache.dll
(84.11 KB, 下载次数: 1176)
放在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的一些参数。 我的是gbk版本,打开了xcache-zh-gb2312.ini 下面的可作参考,改过的一般配置,可以直接复制,修改zend_extension_ts = "d:\host\php\ext\php_xcache.dll" (请改成你的PHP的EXT所在目录):
例:
- ;; 本文件只是例子, 请在 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();
?>
也可以在论坛首页右下角也可以看到“GMT+8, 2011-8-13 16:24, Processed in 0.204078 second(s), 31 queries, Xcache On.”
接下来就可以在discuz!X2后台---全局---性能优化---内存优化---当前工作状态看到已经支持了,可以清理! 见图
疑难解答
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"
|