在Win7 中为php扩展配置Xcache

2015-01-24信息快讯网

XCache是一个又快又稳定的PHP opcode缓存器.经过良好的测试并在大流量/高负载的生产机器上稳定运行.经过(在linux上)测试并支持所有现行PHP分支的最新发布版本,如php5.0~5.6(x64和x86),并支持线程安全/Windows.与同类opcode缓存器相比更胜一筹, 比如能够快速跟进PHP版本.

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通过Chianz.com获取IP地址与地区的方法
WampServer下安装多个版本的PHP、mysql、apache图文教程
PHP PDO fetch 模式各种参数的输出结果一览
PHP和Shell实现检查SAMBA与NFS Server是否存在
windows中为php安装mongodb与memcache
php下Memcached入门实例解析
php连接oracle数据库及查询数据的方法
php从memcache读取数据再批量写入mysql的方法
PHP使用memcache缓存技术提高响应速度的方法
PHP定时任务延缓执行的实现
在win7中搭建Linux+PHP 开发环境
PHP的switch判断语句的“高级”用法详解
PHP中echo,print_r与var_dump区别分析
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
php实现的click captcha点击验证码类实例
php实现的Captcha验证码类实例
php中strstr、strrchr、substr、stristr四个函数的区别总结
PHP提示Cannot modify header information - headers already sent by解决方法
PHP正则替换函数preg_replace和preg_replace_callback使用总结
PHP下的Oracle客户端扩展(OCI8)安装教程
CentOS 6.3下安装PHP xcache扩展模块笔记
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
PHP date()函数警告: It is not safe to rely on the system解决方法
Linux下PHP连接Oracle数据库
Win7 64位系统下PHP连接Oracle数据库
php中用memcached实现页面防刷新功能
php中操作memcached缓存进行增删改查数据的实现代码
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
本地计算机无法启动Apache故障处理
©2014-2024 dbsqp.com