使用Xcache缓存器加速PHP网站的配置方法


Posted in Javascript onApril 22, 2017

推荐地址:http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps1/

由于国内网站备案比较麻烦,所以笔者便把网站放到了香港。虽然网站免去了备案的困扰,但是从访问速度上来看,一般要比放于国内的网站慢2-3倍,所以便想办法对网站做了一些简单的优化,比如使用缓存系统来提升网站页面访问速度。

目前用于Web的缓存系统很多,包括squid、varnish、Nginx自带的proxy_cache、FastCGI中的fastcgi_cache、APC、Xcache等。

像squid、varnish、Nginx自带的proxy_cache这类系统,属于重量级产品,配置维护比较麻烦,不适合小型网站,而且一般用这类系统缓存静态内容,比如图片、css、JavaScript等;像FastCGI中的fastcgi_cache,它主要用于缓存动态内容,所以在访问使用fastcgi_cache的网站时速度极快,但是笔者使用时发现其维护比较麻烦,特别是每次网站有数据要更新后,如果不等到缓冲期过期后得需要手动清除缓存才能看到网站更新的内容;至于APC个人感觉性能就一般了,拿它和Xcache比较时发现访问使用Xcache网站的速度明显高于使用APC网站的速度(笔者没有具体测试),所以最终选择了使用Xcache。

我们都知道PHP是一种动态语言,它在执行时是以解释的方式执行,所以PHP代码每次执行时都会被解析和转换成操作码(opcode)。而Xcache是一个开源的操作码缓存器/优化器,它通过把解析/转换PHP后的操作码缓存到文件(直到原始代码被修改)从而避免重复的解析过程,提高了代码的执行速度,通常能够提高页面生成速率2-5倍,降低了服务器负载,提高了用户访问网站的速度。

一、安装Xcache

# wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz
# tar zxvf xcache-1.3.0.tar.gz
# cd xcache-1.3.0
# /usr/local/php/bin/phpize
# ./configure --enable-xcache--enable-xcache-coverager --enable-xcache-optimizer--with-php-config=/usr/local/php/bin/php-config
# make && make install

注:--enable-xcache表示启用Xcache支持;--enable-xcache-coverager表示包含用于测量加速器功效的附加特性;--enable-xcache-optimizer表示启用操作码优化

安装完毕后系统会提示xcache.so模块生成路径,本次生成路径为/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/,然后把xcache.so移动到/usr/local/php/include/php/ext目录下。

二、配置管理Xcache

1、修改php配置文件

配置时我们可以参考xcache的配置模板xcache.ini,此文件位于Xcache安装程序中

# vi /usr/local/php/lib/php.ini

然后添加如下内容

extension_dir=/usr/local/php/include/php/ext

[xcache-common]
extension = xcache.so
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "xcache"
xcache.admin.pass = ""

[xcache]
xcache.shm_scheme ="mmap"
xcache.size=60M
xcache.count =1
xcache.slots =8K
xcache.ttl=0
xcache.gc_interval =0
xcache.var_size=4M
xcache.var_count =1
xcache.var_slots =8K
xcache.var_ttl=0
xcache.var_maxttl=0
xcache.var_gc_interval =300
xcache.test =Off
xcache.readonly_protection = On
xcache.mmap_path ="/tmp/xcache"
xcache.coredump_directory =""
xcache.cacher =On
xcache.stat=On
xcache.optimizer =Off

[xcache.coverager]
xcache.coverager =On
xcache.coveragedump_directory =""

2、生成Xcache缓存文件

# touch /tmp/xcache# chmod 777 /tmp/xcache

3、生成Xcache管理员的秘密(MD5密文)

# echo -n "123456" |

md5sume10adc3949ba59abbe56e057f20f883e

然后将上述生成的MD5密文粘贴到php.ini文件中xcache.admin.pass = ""选项,xcache.admin.pass= "e10adc3949ba59abbe56e057f20f883e"

4、拷贝Xcache管理程序到网站根目录下

# cp -a /tmp/xcache-1.3.0/admin//usr/local/nginx/html/

然后重新启动PHP,然后访问http://localhost/admin ,用户名为xcache 密码为123456;另外,还可以通过phpinfo来验证PHP是否支持Xcache

使用Xcache缓存器加速PHP网站的配置方法

这里要注意的一点就是Xcache只能缓存默认的一些对象,如int, string, array等,不能缓存对象,否则读取的时候就会报错。

如果你非要缓存对象的话也有办法就是将对象序列化,读取的时候再反序列化一次。

下面我写的一个Xcache的简单类:

程序代码

<?php
/**
* Xcache moudle
*/
class cacheHelper{
public $prefix;

function __construct(){


if(!function_exists('xcache_get')){



exit("This application must required XCache module.");


}

}

/**

 * __set

 *

 * @param mixed $name

 * @param mixed $value

 * @access public

 * @return void

 */

public function __set($name, $value){


xcache_set($this->prefix.$name, $value);

}

/**

 * __get

 *

 * @param mixed $name

 * @access public

 * @return mixed

 */

public function __get($name){


return xcache_get($this->prefix.$name);

}

/**

 * __isset

 *

 * @param mixed $name

 * @access public

 * @return bool

 */

public function __isset($name){


return xcache_isset($this->prefix.$name);

}

/**

 * __unset

 *

 * @param mixed $name

 * @access public

 * @return void

 */

public function __unset($name){


xcache_unset($this->prefix.$name);

}
}
?>
Javascript 相关文章推荐
Jquery iframe内部出滚动条
Feb 11 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
深入理解jQuery 事件处理
Jun 14 Javascript
DOM 事件的深入浅出(一)
Dec 05 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
JavaScript实现横版菜单栏
Mar 17 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
Js图片点击切换轮播实现代码
Jul 27 Javascript
AngularJS的脏检查深入分析
Apr 22 #Javascript
在node中如何使用 ES6
Apr 22 #Javascript
JS实现异步上传压缩图片
Apr 22 #Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
Apr 22 #Javascript
Vue form 表单提交+ajax异步请求+分页效果
Apr 22 #Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 #Javascript
JS使用cookie实现只出现一次的广告代码效果
Apr 22 #Javascript
You might like
PHP 程序授权验证开发思路
2009/07/09 PHP
php实现网站插件机制的方法
2009/11/10 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
Python的Urllib库的基本使用教程
2015/04/30 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
python使用super()出现错误解决办法
2017/08/14 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
python按照多个条件排序的方法
2019/02/08 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
护士自荐信怎么写
2013/10/18 职场文书
企业新年寄语
2014/04/04 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
暑期培训班招生方案
2014/08/26 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang