设为首页 收藏本站
查看: 2302|回复: 0

[经验分享] 使用Xcache缓存器加速你的PHP网站

[复制链接]

尚未签到

发表于 2015-11-19 09:45:16 | 显示全部楼层 |阅读模式
    由于国内网站备案比较麻烦,所以笔者便把网站放到了香港。虽然网站免去了备案的困扰,但是从访问速度上来看,一般要比放于国内的网站慢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

DSC0000.gif
1 # wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz
2 # tar zxvf xcache-1.3.0.tar.gz
3 # cd xcache-1.3.0
4 # /usr/local/php/bin/phpize
5 # ./configure --enable-xcache--enable-xcache-coverager --enable-xcache-optimizer--with-php-config=/usr/local/php/bin/php-config
6 # 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
    然后添加如下内容


1 extension_dir=/usr/local/php/include/php/ext
2
3 [xcache-common]
4 extension = xcache.so
5 [xcache.admin]
6 xcache.admin.enable_auth = On
7 xcache.admin.user = "xcache"
8 xcache.admin.pass = ""
9
10 [xcache]
11 xcache.shm_scheme ="mmap"
12 xcache.size=60M
13 xcache.count =1
14 xcache.slots =8K
15 xcache.ttl=0
16 xcache.gc_interval =0
17 xcache.var_size=4M
18 xcache.var_count =1
19 xcache.var_slots =8K
20 xcache.var_ttl=0
21 xcache.var_maxttl=0
22 xcache.var_gc_interval =300
23 xcache.test =Off
24 xcache.readonly_protection = On
25 xcache.mmap_path ="/tmp/xcache"
26 xcache.coredump_directory =""
27 xcache.cacher =On
28 xcache.stat=On
29 xcache.optimizer =Off
30
31 [xcache.coverager]
32 xcache.coverager =On
33 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只能缓存默认的一些对象,如int, string, array等,不能缓存对象,否则读取的时候就会报错。
    如果你非要缓存对象的话也有办法就是将对象序列化,读取的时候再反序列化一次。
    下面我写的一个Xcache的简单类:


  程序代码


1 <?php
2 /**
3 * Xcache moudle
4 */
5 class cacheHelper{
6   public $prefix;
7   function __construct(){
8     if(!function_exists('xcache_get')){
9       exit(&quot;This application must required XCache module.&quot;);
10     }
11   }
12   /**
13    * __set
14    *
15    * @param mixed $name
16    * @param mixed $value
17    * @access public
18    * @return void
19    */
20   public function __set($name, $value){
21     xcache_set($this->prefix.$name, $value);
22   }
23   /**
24    * __get
25    *
26    * @param mixed $name
27    * @access public
28    * @return mixed
29    */
30   public function __get($name){
31     return xcache_get($this->prefix.$name);
32   }
33   /**
34    * __isset
35    *
36    * @param mixed $name
37    * @access public
38    * @return bool
39    */
40   public function __isset($name){
41     return xcache_isset($this->prefix.$name);
42   }
43   /**
44    * __unset
45    *
46    * @param mixed $name
47    * @access public
48    * @return void
49    */
50   public function __unset($name){
51     xcache_unset($this->prefix.$name);
52   }
53 }
54 ?>
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141035-1-1.html 上篇帖子: nginx环境下 XCache安装配置 下篇帖子: 三款免费的PHP加速器:APC、eAccelerator、XCache比较(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表