XCache项目由mOo领导,MoO也是Lighttpd的开发成员之一。Lighttpd是速度最快的Web服务器应用程序之一,并超越Apache和许多其他Web服务器来实现类似的结果。
目前最新版本是XCache 3.2.0,php5支持。官方网站是: http://xcache.lighttpd.net/
如果你的英语不好,可以点击右边把语言切换成中文。
首先下载最新版本:http://xcache.lighttpd.net/pub/Releases/3.2.0/记得选择正确的版本。
下载解压后放入php下的ext目录,然后打开php.ini,添加扩展名=php_xcache.dll
还有一个用中文演示Xcache的php.ini,以及一个查看Xcache和信息的程序。
注意xcache.admin.pass用md5加密并存储
Xcache.count可以根据您的CPU数量进行设置,默认值为1
xcache.slots缓存的文件/变量的哈希引用值可以根据自己的实际情况进行设置
完成后,重新启动Apache服务。
复制代码如下:这个文件只是一个例子,请在php.ini中设置生效[xcache-common];非windows :扩展示例=xcache.so;Windows系统示例:extension=PHP _ xcache . dll[xcache . admin]xcache . admin . enable _ auth=On xcache . admin . user=' MoO ';Xcache.admin.pass=md5($您的密码);使用$your_password下面的密码登录,请用md5加密后填入xcache . admin . pass=' '[xcache];这里的大多数选项只能在ini中修改,这里列出的所有默认值都是,除非另有说明;选择底层内存共享实现方案xcache.shm _ scheme=' mmap禁用: xcache . size=0;启用: xcache . size=64M(0的任意值),注意你的系统mmap xcache.size=60M的上限;建议的设置是cpu数量(cat/proc/cpuinfo | grep-c处理器)x缓存。计数=1;它只是一个哈希引用值,实际存储项(php脚本/变量)可以超过这个数xcache.slots=8K缓存项的Ttl,0=永久xcache。ttl,0=0;扫描过期项目的时间间隔,0=不扫描,其他值以秒为单位xcache . GC _ interval=0;同上,只需为变量缓存设置xcache . var _ size=4m xcache . var _ count=1 xcache . var _ slots=8k;xcache_*()函数xcache.var_ttl的ttl参数默认值=0;xcache_*()函数的ttl参数仅限于此设置。0=xcache。var _ maxttl=0xcache。var _ GC _ interval=300xcache无效;readonly _ protection=off时/dev/zero;Xcache.mmap_path是一个文件路径,而不是*nix系统的目录。(自动创建/覆盖);如果要启用ReadonlyProtection,必须避免使用“/dev/*”和类似“/tmp/xcache”的内容。不同的php进程组不会共享同一个/tmp/xcache;Xcache.mMAP_path=匿名映射名称,而不是Win32系统的文件路径。建议使用xcache,避免与其他软件发生冲突。xcache . mmap _ path='/dev/zero ';仅在XCache异常时有用。将其设置为null(禁用)或类似“/tmp/phpcore/”的内容(可以通过php写入文件)xcache . core dump _ directory=“”;仅用于Windows。除非XCache开发人员告诉你,否则保留默认值XCache . coredump _ type=0;异常时自动禁止缓存xcache。disable _ on _ crash=off启用实验功能(如果有)xcache.experimental=Off可以在请求级别更改以下设置。htaccess和其他xcache . cacher=on xcache . stat=on xcache . optimizer=off[xcache . coverage r];开启此功能后,运行性能降低;该功能仅在xcache时启用;覆盖率r==on xcachecoveragedump _ directory=='非空值';根据请求设置。可以是ini_set,htaccess等。启用代码流覆盖信息收集和xcache _ coverage r _ start/stop/get/clean()函数xcache。覆盖率r=关闭xcache。覆盖率r _ autostart=on仅在php ini文件中设置;确保覆盖率查看器脚本(注意open _ basedir) xcache可以读取该目录。coveragedump _ directory=' '
然后检查phpinfo,看看Xcache是否已经生效。下图
现在在网发布目录中新建一个目录如xcache,将官方的压缩包内的解放运动及htdocs目录放里面,
在浏览器输入http://127.0.0.1/xcache/htdocs/,会弹出一个登陆的账号密码对话框,输入进去后,你就可以看到xcache的环境及配置,变量等等。
但实际上Xcache不但能缓存变量,而且能缓存服务器端编程语言(专业超文本预处理器的缩写)文件,如果你的服务器端编程语言(专业超文本预处理器的缩写)环境中配置了Xcache扩展后,它会自动将每次给你访问的服务器端编程语言(专业超文本预处理器的缩写)文件都自动缓存。无需再额外的修改代码,十分的方便快捷,如下图的我只访问了phpmyadmin,Xcache官方的程序包就可以检测到phpmyadmin的躲藏列表。
代码很简单,带单例模式,可以直接在应用环境中使用,代码在php5.5.12中完美测试通过。
复制代码代码如下: $ c=new Cache _ Xcache();$c-set('key ',' AAAA 123 ');echo $ c-get(' key ');cache _ xcache :3360 getinstance()-set(' key 1 ',' 9999999999999 ');echo Cache _ xcache :3360 getinstance()-get(' key 1 ');/** - 代码开始- **/class Cache_Xcache { /** *单例模式实例化本类* * @ var object */protected static $ _ instance=null;/** * 默认的缓存策略* * @ var array */protected $ _ defaultOptions=array(' expire '=900);/** * 构造方法* * @访问公共* @返回boolean */public function _ _ construct(){//分析xcache扩展模块if(!extension _ loaded(' xcache '){ die('使用前要加载的xcache扩展!');}返回true} /** *写入缓存* * @访问公共* * @param字符串$key缓存key * @ param mixted $ value缓存值* @param整数$过期生存周期* * @返回布尔值*/公共函数集($key,$value,$expire=null) { //参数分析if(!$ key){ return false;} $expire=is_null($expire)?$ this-_ DefaultOptions[' expire ']: $ expire;return xcache_set($key,$value,$ expire);} /** * 读取缓存,失败或缓存撒失效时返回假* * @访问公共* * @param字符串$key缓存密钥* * @返回混合*/公共函数get($ key){//参数分析if(!$ key){ return false;}返回xcache_isset($key)?xcache _ get($ key): false;} /** * 缓存一个变量到数据存储* * @访问公共* * @param字符串$key数据key * @param混合$值数据值* @ param int $过期缓存时间(秒)* * @返回布尔值*/公共函数add($key,$value,$expire=null) { //参数分析if(!$ key){ return false;} $expire=is_null($expire)?$ this-_ DefaultOptions[' expire ']: $ expire;回来!xcache_isset($key)?$this-set($key,$value,$ expire): false;} /** * 删除指定的缓存* * @访问公共* * @param字符串$key缓存密钥* * @返回布尔值*/public函数删除($key) { //参数分析if(!$ key){ return false;}返回xcache _ unset($ key);} /** * 清空全部缓存变量* * @ access public * @ return boolean */public function clear(){ return xcache _ clear _ cache(XC _ TYPE _ VAR,0);} /** * 单例模式* * 用于本类的单例模式(单例)实例化* * @访问公共* @返回对象*/公共静态函数getInstance() { if(!self : $ _ instance){ self : $ _ instance=new self();}返回self: $ _ instance} }