在Win7 中为php扩展配置Xcache
《在Win7 中为php扩展配置Xcache》要点: XCache 工程由 mOo 领队,他也是 Lighttpd 的开发成员之一. Lighttpd 是最快的 Web 服务器应用程序之一,并且超越 Apache 以及许多其他 Web 服务器. XCache 努力达到类似的效果.PHP应用 目前最新的版本为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是否已经生效.如下图 现在在web发布目录中新建一个目录如xcache,将官方的压缩包内的lib及htdocs目录放里面, 在浏览器输入http://127.0.0.1/xcache/htdocs/,会弹出一个登陆的账号暗码对话框,输入进去后,你就可以看到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,$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; ??? } } 编程之家培训学院每天发布《在Win7 中为php扩展配置Xcache》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |