使用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 中的replace方法说明
Apr 13 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
js实现点击链接后窗口缩小并居中的方法
Mar 02 Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
详解angularjs 关于ui-router分层使用
Jun 12 Javascript
Vue 2.0入门基础知识之内部指令详解
Oct 15 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
JS实现网站吸顶条
Jan 08 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
将php数组输出html表格的方法
2014/02/24 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
php 可变函数使用小结
2018/06/12 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
JS实现页面打印功能
2017/03/16 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
详解Python中的Descriptor描述符类
2016/06/14 Python
Python变量和字符串详解
2017/04/29 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
自主招生自荐信指南
2014/02/04 职场文书
淘宝活动策划方案
2014/02/06 职场文书
党员民主生活会材料
2014/12/15 职场文书
办公室个人总结
2015/02/28 职场文书
中学生自我评价2015
2015/03/03 职场文书
结婚仪式主持词
2015/06/29 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
python实现进度条的多种实现
2021/04/29 Python
logback如何自定义日志存储
2021/08/30 Java/Android
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers