APC、memcached、xcache、eAccelerator 四加速扩展的主要区别 在安装 LNMP 或 LAMP 架构 Web 服务器环境时,会选择安装一些缓存扩展以提高 PHP 运行效率。常用缓存扩展,包括:Alternative PHP Cache (简称 APC)、memcached、xcache、eAccelerator。它们之间有什么区别、又分别起什么作用呢?我们该如何选择?本文将给出答案。 1、 Alternative PHP Cache (简称 APC) Alternative PHP Cache (简称 APC) 是一个开放自由的 PHP opcode 缓存工具。它旨在提供一个自由、 开放、 健全的框架,以缓存和优化 PHP 中间代码。 Alternative PHP Cache 是一种对 PHP 有效的开放源高速缓冲储存器工具,它能缓存 Opcode (目标文件) 的 PHP 中间码。APC 缓存分 2 部分:系统缓存和用户数据缓存。APC 会自动调用系统缓存,就是把 PHP 文件源码编译结果缓存起来,在下一次调用时先对比时间标记。如果未过期,则使用缓存代码运行。默认缓存 3600s ( 1 小时)。但是这样仍会浪费大量 CPU 时间。因此,可在 php.ini 中设置 system 缓存为永不过期 ( apc.ttl=0 )。不过,如果这样设置的话,改变 php.ini 代码后需重启 Web 服务器 (譬如:Apache 或 Nginx )。目前对 APC 的性能测试一般指的就是这一 cache;从文字上讲:Alternative PHP Cache 是一种内存缓存扩展,也是数据库缓存扩展。 2、 memcached memcached 是一个高性能的分布式内存对象缓存系统。通常被用于降低数据库加载压力,以提高动态 Web 应用的响应速度。 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态 Web、数据库驱动网站的速度。从文字上可这样理解:内存缓存扩展,且针对集群服务器使用较多,主要用于分布式缓存,算是数据库缓存。 3、 xcache xcache 是一个开源的 opcode 缓存器/优化器,它能提高服务器的 PHP 性能。它把编译后的 PHP 数据缓冲到共享内存,从而避免重复的编译过程。可直接使用缓冲区已编译代码,从而提高 PHP 效率。通常能提高页面生成速率 2 到 5 倍, 降低服务器负载。其实它与 eAccelerator 一样,都是 PHP 加速器扩展。 4、eAccelerator eAccelerator 是一个自由开放源码的 PHP 加速器,可优化和缓存动态内容,提高 PHP 脚本缓存性能。使 PHP 脚本在编译状态下,对服务器的开销几乎可完全消除。它还可对脚本起优化作用,以加快其执行效率。可提高 PHP 程序代码执行效率 1-10 倍。从文字上可这样理解:eAccelerator 是 PHP 的加速器扩展。 以上是 4 加速扩展的作用与区别,简单点说:memcached、APC 是数据库缓存扩展,eAccelerator、xcache 是 PHP 的缓存扩展。一般两者只要安装其中之一即可,不要贪多。此外,实际测试中发现当 Cache 数量超过一定阀值时,APC 的性能还不如 Memcached。所以在扩展的选择上,本人一般会选择 xcache + memcached 这个组合。 若已安装 APC 却又想再安装 xcache 时,在 Ubuntu Server 14.04 下会提示冲突。 总结: 1、程序环境非必要 Zend Optimizer 的情况下,首选 APC (它和 Zend Optimizer 是不兼容的);且 APC 的兼容性及性能,表现都非常优秀。 2、若 PHP 环境需要 Zend Optimizer,就安装 eAccelerator,并把 Zend Optimizer 的压缩级别调到 0。 zend optimizer 是一个代码优化模块,可调优 PHP 代码,实现原理:对那些在被最终执行之前,由运行时编译器 (Run-Time Compiler) 产生的代码进行优化。代码性能可提高 40% 到 100%,从这一点严格说,不具备强大的缓存能力。 eAccelerator 是一个将编译后的 PHP 代码缓存在 share memory 中的模块。通过访问共享内存可得到编译后的代码并直接执行,以提高效率。它对 PHP 的执行效率的提高还是很大的。同时,eAccelerator 也可缓存数据至文件中。这部分由于是对文件的操作,对大多数的文件 cache 来说,原理相似,性能相近。 版权声明: 本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。 |