设为首页收藏本站

郑州科技市场

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6430|回复: 3
打印 上一主题 下一主题

discuz!X2中XCache缓存加速在Win2003 + IIS6下的完整配置方法与疑难解答教程

[复制链接]
跳转到指定楼层
楼主
发表于 2011-8-13 16:39:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
介绍
XCache是一种新兴的php缓存器,主要为WIN环境下IIS开发,经过本人测试,在Windows下效果比同类软件强很多。 同类PHP缓存加速器软件eaccelerator在LINUX下表现出色,但是在IIS环境下就动不动出现内存出错,所以如果服务器是IIS的,建议使用XCache!
实际测试效果如下(非科学方法):

  1. 原网页平均执行时间: 0.13 秒

  2. 加速后网页平均执行时间: 0.03秒

  3. 原CPU占用率: 15% - 60%

  4. 加速后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所在目录

例:
  1. ;; 本文件只是例子, 请在 php.ini 里设置以便生效
  2. [xcache-common]
  3. ;; Windows 系统例子:
  4. zend_extension_ts = "d:\host\php\ext\php_xcache.dll"

  5. [xcache.admin]
  6. xcache.admin.enable_auth = Off
  7. xcache.admin.user = "admin"
  8. ; xcache.admin.pass = md5($您的密码)
  9. xcache.admin.pass =123456

  10. [xcache]
  11. ; 这里的多数选项仅在 ini 里可以修改, 这里列出的都是默认值, 除非另外说明

  12. ; select low level shm/allocator scheme implemenation
  13. xcache.shm_scheme =        "mmap"
  14. ; 禁用: xcache.size=0
  15. ; 启用: xcache.size=64M 之类 (任意>0的值) 同时请注意您的系统 mmap 上限
  16. xcache.size  =                64M
  17. ; 建议设置为 cpu 数 (cat /proc/cpuinfo |grep -c processor)
  18. xcache.count =                 2
  19. ; 只是个参考值, 您可以放心地存储多于此数量的项目(php脚本/变量)
  20. xcache.slots =                64K
  21. ; 缓存项目的 ttl, 0=永久
  22. xcache.ttl   =                1800
  23. ; 扫描过期项目的时间间隔, 0=不扫描, 其他值以秒为单位
  24. xcache.gc_interval =          1800

  25. ; 同上, 只是针对变量缓存设置
  26. xcache.var_size  =            8M
  27. xcache.var_count =             1
  28. xcache.var_slots =            8K
  29. ; 默认, 允许 ini_set()
  30. xcache.var_ttl   =             0
  31. ; 最大ttl值
  32. xcache.var_maxttl   =          0
  33. xcache.var_gc_interval =     300

  34. ; 仅测试用
  35. xcache.test =                Off
  36. ; /dev/zero 时无效
  37. xcache.readonly_protection = Off
  38. ; 对于 *nix 系统, xcache.mmap_path 是文件路径而不是目录, (可以不存在 但是必须能创建).
  39. ; 如果您期望启用 ReadonlyProtection, 可以使用类似 "/tmp/xcache"
  40. ; 2 个 php 组不会共享同一个 /tmp/xcache
  41. ; 对于 Win32 系统, xcache.mmap_path=匿名MAP名字, 不是文件路径. 建议使用 XCache 字眼避免跟其他软件冲突
  42. xcache.mmap_path =    "/dev/zero"


  43. ; 仅用于 *nix 系统
  44. ; 设置为空(禁用) 或者类似 "/tmp/phpcore/"
  45. ; 注意该目录应该能被 php 写入文件 (跟 open_basedir 无关)
  46. xcache.coredump_directory =   ""

  47. xcache.cacher =               On
  48. xcache.stat   =               On
  49. xcache.optimizer =           Off

  50. [xcache.coverager]

  51. ; 如果 xcache.coveragedump_directory 设置为空则本设置自动为 Off
  52. xcache.coverager =          Off

  53. ; 请确保本目录能被 coverage viewer 脚本读取 (注意 open_basedir)
  54. ; 依赖于 xcache.coverager=On
  55. 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]前


  1. [Zend]

  2. zend_extension_manager.optimizer_ts="d:/host/zend/lib/Optimizer-3.3.0"

  3. 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"

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

沙发
发表于 2011-8-13 23:09:20 | 只看该作者
这可真够详细的!傻瓜式教程!版主真是太细心了!郑州IT信息港没你可真不行啊!
回复 支持 反对

使用道具 举报

板凳
发表于 2011-8-17 22:24:58 | 只看该作者
呵呵……解决了……顶楼主!
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|郑州二手手机|郑州二手电脑|郑州二手笔记本|郑州科技市场 ( 豫ICP备11013749号  

GMT+8, 2025-1-22 21:57 , Processed in 0.282871 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

快速回复 返回顶部 返回列表