在Win7 中为php扩展配置Xcache

  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;

  }

  }