使用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 相关文章推荐
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
JavaScript 学习历程和心得分享
Dec 12 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
使用Script元素发送JSONP请求的方法
Jun 12 Javascript
BootStrap Validator使用注意事项(必看篇)
Sep 28 Javascript
JS取数字小数点后两位或n位的简单方法
Oct 24 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
Mar 08 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
Sep 20 jQuery
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
Node.js模块加载详解
2014/08/16 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python定时器使用示例分享
2014/02/16 Python
python写日志封装类实例
2015/06/28 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
python最长回文串算法
2018/06/04 Python
python实现决策树分类
2018/08/30 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
幼儿园清明节活动总结
2014/07/04 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis