在Win7 中为php扩展配置Xcache


Posted in PHP onOctober 08, 2014

XCache 工程由 mOo 领队, 他也是 Lighttpd 的开发成员之一. Lighttpd 是最快的 Web 服务器应用程序之一, 并且超越 Apache 以及许多其他 Web 服务器. XCache 努力达到类似的效果.

目前最新的版本为XCache 3.2.0,它是php5全系列支持的,官方网站: http://xcache.lighttpd.net/

如果英文不好的朋友,可以点右边切换语言为中文。

首先下载最新的版本: http://xcache.lighttpd.net/pub/Releases/3.2.0/ 记得选择正确的版本。

下载解压后放到php下的ext目录下,然后打开php.ini 添加extension = php_xcache.dll

压缩包内还有一个中文版Xcache的php.ini的示范,还有就是一个查看Xcache及信息的程序.

注意xcache.admin.pass 用md5加密后存放

xcache.count可以根据你CPU的数设置,默认为1

xcache.slots缓存的文件/变量hash参考值,根据自己的实际情况可以设置

完成后,重新启动Apache服务。

;; 本文件只是例子, 请在 php.ini 里设置以便生效 

[xcache-common] 

;; 非 windows 例子: 

extension = 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 processor) 

xcache.count =                 1 

; 只是个 hash 参考值, 实际存储项目(php脚本/变量)可超过这个数字 

xcache.slots =                8K 

; 缓存项目的 ttl, 0=永久 

xcache.ttl   =                 0 

; 扫描过期项目的时间间隔, 0=不扫描, 其他值以秒为单位 

xcache.gc_interval =           0 

; 同上, 只是针对变量缓存设置 

xcache.var_size  =            4M 

xcache.var_count =             1 

xcache.var_slots =            8K 

; xcache_*() 函数 ttl 参数的默认值 

xcache.var_ttl   =             0 

; 限制 xcache_*() 函数 ttl 参数不超过此设置. 0=不限制 

xcache.var_maxttl   =          0 

xcache.var_gc_interval =     300 

; /dev/zero 时无效 

xcache.readonly_protection = Off 

; 对于 *nix 系统, xcache.mmap_path 是文件路径而不是目录. (自动创建/覆盖) 

; 如果您期望启用 ReadonlyProtection, 必须避免使用 "/dev/*", 可以使用类似 "/tmp/xcache"

; 不同 php 进程组不会共享同一个 /tmp/xcache 

; 对于 Win32 系统, xcache.mmap_path=匿名MAP名字, 不是文件路径. 建议使用 XCache 字眼避免跟其他软件冲突 

xcache.mmap_path =    "/dev/zero"

  

; 仅在 XCache 异常时有用. 设置为空(禁用) 或者类似 "/tmp/phpcore/" (能被 php 写入文件) 

xcache.coredump_directory =   ""

; 仅用于 Windows. 除非 XCache 开发人员告诉你, 否则保持默认值 

xcache.coredump_type =         0 

; 异常时自动禁止缓存 

xcache.disable_on_crash =    Off 

; 启用实验性功能 (如果有) 

xcache.experimental =        Off 

; 以下是 Request 级可改设置. 可以 ini_set, .htaccess 等 

xcache.cacher =               On 

xcache.stat   =               On 

xcache.optimizer =           Off 

[xcache.coverager] 

; 本功能开启后降低运行性能 

; 仅在 xcache.coverager == On && xcache.coveragedump_directory == "非空值" 时本功能才会启用 

; per request settings. 可以 ini_set, .htaccess 等 

; 启用代码流程覆盖面信息采集以及 xcache_coverager_start/stop/get/clean() 等函数 

xcache.coverager =           Off 

xcache.coverager_autostart =  On 

; 仅在 php ini 文件内设置 

; 请确保本目录能被 coverage viewer 脚本读取 (注意 open_basedir) 

xcache.coveragedump_directory = ""

 然后查看phpinfo,看看Xcache是否已经生效。如下图

在Win7 中为php扩展配置Xcache

现在在web发布目录中新建一个目录如xcache,将官方的压缩包内的lib及htdocs目录放里面,

在浏览器输入http://127.0.0.1/xcache/htdocs/, 会弹出一个登陆的账号密码对话框,输入进去后,你就可以看到xcache的环境及配置,变量等等。。

在Win7 中为php扩展配置Xcache

在Win7 中为php扩展配置Xcache

但实际上Xcache不但能缓存变量,而且能缓存php文件,如果你的php环境中配置了Xcache扩展后,它会自动将每次给你访问的php文件都自动缓存。无需再额外的修改代码,十分的方便快捷,如下图的我只访问了phpmyadmin,Xcache官方的程序包就可以检测到phpmyadmin的cache列表。

代码很简单,带单例模式,可以直接在应用环境中使用,代码在php5.5.12中完美测试通过。

 $c =new Cache_Xcache(); 

   

 $c->set('key', 'aaaa123'); 

   

 echo $c->get('key'); 

   

 Cache_Xcache::getInstance()->set('key1', '999999999999999'); 

   

 echo Cache_Xcache::getInstance()->get('key1'); 

 /**------------------------------代码开始----------------------------------**/

  class Cache_Xcache { 

    /** 

     * 单例模式实例化本类 

     * 

     * @var object 

     */

    protected static $_instance = null; 

    /** 

     * 默认的缓存策略 

     * 

     * @var array 

     */

    protected $_defaultOptions = array('expire' => 900); 

    /** 

     * 构造方法 

     * 

     * @access public 

     * @return boolean 

     */

    public function __construct() { 

        //分析xcache扩展模块         if (!extension_loaded('xcache')) { 

            die('The xcache extension to be loaded before use!'); 

        } 

        return true; 

    } 

    /** 

     * 写入缓存 

     * 

     * @access public 

     * 

     * @param string $key 缓存key 

     * @param mixted $value 缓存值 

     * @param integer $expire 生存周期 

     * 

     * @return boolean 

     */

     public function set($key, $value, $expire = null) { 

        //参数分析         if (!$key) { 

            return false; 

        } 

        $expire = is_null($expire) ? $this->_defaultOptions['expire'] : $expire; 

        return xcache_set($key, $value, $expire); 

     } 

    /** 

     * 读取缓存,失败或缓存撒失效时返回 false 

     * 

     * @access public 

     * 

     * @param string $key 缓存key 

     * 

     * @return mixted 

     */

     public function get($key) { 

        //参数分析         if (!$key) { 

            return false; 

        } 

        return xcache_isset($key) ? xcache_get($key) : false; 

     } 

    /** 

     * 缓存一个变量到数据存储 

     * 

     * @access public 

     * 

     * @param string $key 数据key 

     * @param mixed $value 数据值 

     * @param int $expire 缓存时间(秒) 

     * 

     * @return boolean 

     */

    public function add($key, $value, $expire = null) { 

        //参数分析         if (!$key) { 

            return false; 

        } 

        $expire = is_null($expire) ? $this->_defaultOptions['expire'] : $expire; 

        return !xcache_isset($key) ? $this->set($key,$value,$expire) : false; 

    } 

    /** 

     * 删除指定的缓存 

     * 

     * @access public 

     * 

     * @param string $key 缓存Key 

     * 

     * @return boolean 

     */

     public function delete($key) { 

         //参数分析         if (!$key) { 

            return false; 

        } 

        return xcache_unset($key); 

     } 

    /** 

     * 清空全部缓存变量 

     * 

     * @access public 

     * @return boolean 

     */

    public function clear() { 

        return xcache_clear_cache(XC_TYPE_VAR, 0); 

    } 

    /** 

     * 单例模式 

     * 

     * 用于本类的单例模式(singleton)实例化 

     * 

     * @access public 

     * @return object 

     */

    public static function getInstance() { 

        if (!self::$_instance) { 

            self::$_instance = new self(); 

        } 

        return self::$_instance; 

    } 

}
PHP 相关文章推荐
php中文件上传的安全问题
Oct 09 PHP
php生成excel列序号代码实例
Dec 24 PHP
理解PHP中的stdClass类
Apr 18 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php递归遍历多维数组的方法
Apr 18 PHP
Zend Framework常用校验器详解
Dec 09 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 #PHP
两千行代码的PHP学习笔记汇总
Oct 05 #PHP
PHP实现定时执行任务的方法
Oct 05 #PHP
PHP实现图片旋转效果实例代码
Oct 01 #PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 #PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 #PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 #PHP
You might like
解析php中反射的应用
2013/06/18 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python协程用法实例分析
2015/06/04 Python
Python对象转JSON字符串的方法
2016/04/27 Python
名片管理系统python版
2018/01/11 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
python如何使用腾讯云发送短信
2020/09/17 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
机械机修工岗位职责
2014/08/03 职场文书
学党史心得体会
2014/09/05 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
工作证明英文模板
2014/10/21 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
电频谱管理的原则是什么
2022/02/18 无线电
python数据处理之Pandas类型转换
2022/04/28 Python
Python+pyaudio实现音频控制示例详解
2022/07/23 Python