PHP中4个加速、缓存扩展的区别和选用建议


Posted in PHP onMarch 12, 2014

折腾VPS的朋友,在安装好LNMP等Web运行环境后都会选择一些缓存扩展安装以提高PHP运行速度,常被人介绍的有eAccelerator、memcached、xcache、Alternative PHP Cache这几个缓存扩展,它们之间有什么区别?分别的作用又是什么?我们如何选择?这是本文给于大家的答案。

1、eAccelerator
eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10倍。从文字上可以理解为:eAccelerator是PHP加速器扩展。
2、memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。从文字上可以理解为:内存缓存扩展,并且针对于集群服务器使用较多,主要用于分布式缓存,算是数据库缓存。
3、Alternative PHP Cache(APC缓存)
Alternative PHP Cache (APC缓存)是一种对PHP有效的开放源高速缓冲储存器工具,他能够缓存Opcode(目标文件)的PHP中间码。 APC的缓存分两部分:系统缓存和用户数据缓存. 系统缓存 是自动使用的,是指APC把PHP文件源码的编译结果缓存起来,然后在再次调用时先对比时间标记。如果未过期,则使用缓存代码运行。默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0).不过如果这样设置,改运PHP代码后需要restart一下您的web服务器(比如apache…).目前对APC的性能测试一般指的是这一层cache;从文字上理到:Alternative PHP Cache(APC缓存)也算是一种内存缓存扩展,算是数据库缓存扩展。
4、Xcache
是一个开源的opcode缓存器/优化器, 他能够提高服务器上的PHP性能,他通过把编译PHP后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高您的页面生成速率2到5倍, 降低服务器负载。 其实它与eAccelerator一样是PHP加速器扩展。

以上就是他们的作用与区别,简单一点就是:eAccelerator,xcache是PHP缓存扩展,memcached、APC缓存是数据库缓存扩展,一般两者只有要安装其中一个即可,不要贪多。另外,实际测试中发现当Cache数量超过一定阀值的时候,APC的性能不如Memcache。所以在扩展的选择上,本人一般会选择xcache+memcached这个组合。

PHP 相关文章推荐
PHP 文件扩展名 获取函数
Jun 03 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
php curl 上传文件代码实例
Apr 27 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
9个比较实用的php代码片段
Mar 15 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 PHP
php使用websocket示例详解
Mar 12 #PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 #PHP
php实现快速排序的三种方法分享
Mar 12 #PHP
php二分查找二种实现示例
Mar 12 #PHP
php遍历文件夹和文件列表示例分享
Mar 11 #PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 #PHP
php上传图片存入数据库示例分享
Mar 11 #PHP
You might like
建站常用13种PHP开源CMS比较
2009/08/23 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Django中信号signals的简单使用方法
2019/07/04 Python
python画双y轴图像的示例代码
2019/07/07 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
上班打牌检讨书
2014/02/07 职场文书
中考冲刺决心书
2014/03/11 职场文书
年终奖发放方案
2014/06/02 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript
Python基本数据类型之字符串str
2021/07/21 Python
MySQL 语句执行顺序举例解析
2022/06/05 MySQL