使用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 相关文章推荐
[IE&amp;FireFox兼容]JS对select操作
Jan 07 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
js读取被点击次数的简单实例(从数据库中读取)
Mar 07 Javascript
Javascript访问器属性实例分析
Dec 30 Javascript
js严格模式总结(分享)
Aug 22 Javascript
用原生js做单页应用
Jan 17 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
高性能js数组去重(12种方法,史上最全)
Dec 21 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
DOM XPATH获取img src值的query
2013/09/23 PHP
使用php计算排列组合的方法
2013/11/13 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
php备份数据库类分享
2015/04/14 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
如何基于python实现归一化处理
2020/01/20 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
开展创先争优活动总结
2014/08/28 职场文书
导航工程专业自荐信
2014/09/02 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书