在Win7 中为php扩展配置Xcache

前端之家收集整理的这篇文章主要介绍了在Win7 中为php扩展配置Xcache前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

目前最新的版本为XCache 3.2.0,它是PHP5全系列支持的,官方网站:

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

首先下载最新的版本: 记得选择正确的版本。

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

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

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

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

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

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

代码如下:
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是否已经生效。如下图

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

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

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

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

代码如下:
$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,$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,$expire = null) {
    //参数分析 if (!$key) {
    return false;
    }
    $expire = is_null($expire) ? $this->_defaultOptions['expire'] : $expire;
    return !xcache_isset($key) ? $this->set($key,$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相关文章