在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语法(1)
Oct 09 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
Yii入门教程之Yii安装及hello world
Nov 25 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
PHP实现打包下载文件的方法示例
Oct 07 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 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
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
javascript数组去掉重复
2011/05/12 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
node.js实现的装饰者模式示例
2017/09/06 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
js实现简易ATM功能
2020/10/27 Javascript
python django集成cas验证系统
2014/07/14 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
毕业生求职自荐信怎么写
2014/01/08 职场文书
洗车工岗位职责
2014/03/15 职场文书
本科生就业推荐信
2014/05/19 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
建筑工地大门标语
2014/06/18 职场文书
护士求职自荐信范文
2015/03/04 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
css样式important规则的正确使用方式
2022/06/10 HTML / CSS