APC、eAccelerator和XCache三者之间的区别

105

我正在研究这些选项中的哪一个更好,但我找不到一个突出的选择。 EacceleratorAPC 更快,但 APC 的维护更好。 Xcache 更快,但其他选项的语法更容易。

请问有人能推荐使用哪个选项以及原因吗?


1
eAccelerator似乎已经超过一年没有发布了。xcache的VC肯定是活跃的,但我无法专注于发布和关注。这归结为一个正在维护的软件,APC毫不费力地赢得了胜利。 - Till
11
2011年第三季度了,自2009年以来有什么变化吗? - john
另外,https://dev59.com/nXVD5IYBdhLWcg3wR5ko。 - Pacerier
12个回答

110

APC将被包含在PHP 6中,我猜测它之所以被选择是有充分的理由的 :)

它相当容易安装,而且肯定可以提高速度。


46
我只遇到了三个APC的问题,而且这些问题都是在我控制范围内的。1)不要让APC填满内存,请确保分配足够的内存。2)不要在活动服务器上使用apc_clear_cache()。3) APC无法很好地处理重锁争用 - 不要尝试同时从多个进程写入单个键。 - Frank Farmer
10
目前实际上并不存在PHP6。 - Evert
@Frank - 只是好奇。关于“2)不要在活动服务器上使用apc_clear_cache()” - 为什么?您是否特指其中有多个网站的服务器? - Ade
20
由于该主题在谷歌中排名靠前,因此可能需要更新以指示Zend Optimizer已合并到本月发布的PHP 5.5中。尽管您可以将其关闭并改用APC,但我不确定为什么要这样做。 - Forest
2
@Benjamin 用户数据存储可以使用APCu(https://github.com/krakjoe/apcu)进行恢复,该工具可与ZO同时安装和使用。 - Swader
显示剩余6条评论

23

15
真可惜它们太旧了。2006年?呃。 - analytik
3
我们可以等几年,之前的评论就会过时了吧? - benmarks
5
成功。现在它已经3岁了。呃。。。 - Swader
3
伙计,已经是2016年了。有人能重新做一下十年前的基准测试吗? - Pacerier

13

毫无疑问选择APC。这是由PHP开发人员编写的,因此即使它可能不会达到最高速度,您可以肯定它具有最高的质量。

此外,您还可以获得其他一些我经常使用的巧妙功能(http://www.php.net/apc)。


3
Facebook也是APC的重度用户——他们使用了几个GB甚至TB级别的APC缓存。他们所做的许多改进都被发布并集成到了APC的主要版本中。 - Frank Farmer
13
你正在思考的是memcached。 - Evert
3
在连接 memcached 的 TCP/IP 之前,请尝试击中本地 APC 缓存。这是来自 Facebook 的缓存性能经验教训。http://www.scribd.com/doc/4069180/Caching-Performance-Lessons-from-Facebook - Andy
1
可能是...但是当他谈论已经发布的改进等内容时...那很可能是Memcache。除非他们也对apc做了同样的事情。 - Evert
@Andy,Facebook不使用这些。它使用自己的HipHop VM。 - Pacerier
@Pacerier 五年时间里发生了很多变化 ;) 尝试搜索更新的答案 http://stackoverflow.com/search?tab=newest&q=%5bphp%5d%20and%20(%5bopcode%5d%20or%20%5bphp-opcode%5d) - Andy

11

1
更新最新版本 - Xcache 在新功能和修补以前版本方面似乎有最多的活动。 - Ryan Schumacher

11

最终我选择了 eAccelerator - 它可以提供速度提升、更小的内存占用并且非常容易安装,所以我被它所吸引。此外,它还有一个漂亮的基于 web 的前端来清除缓存并提供一些统计信息。

它不再得到维护这个事实对我来说不是问题 - 它能工作,这就是我关心的。将来,如果它不能适应 PHP6(或其他版本),那么我会重新评估我的决定,并很可能选择 APC,因为它已被 PHP 开发人员所采纳(所以应该更容易安装)。


4
如果它破坏了PHP6...你是不是应该说“什么时候”? :) - Brian Lacy
2
有趣的是,5.5年过去了,仍然没有“PHP 6”。 - Eric L.
@Eirik,PHP 6已经过时了。现在是7 - Pacerier

9
在所有我看到的测试中,eAccelerator比其他任何缓存都要快,并且使用更少的内存。它配有一个巧妙的脚本来查看缓存利用率和清除缓存等。eAccelerator与xdebug和Zend Optimizer兼容。
APC被包含在PHP中,因为它由PHP开发人员维护。它表现非常好,但不如eAccelerator。它与Zend Optimizer存在兼容性问题。
Xcache是由lighttpd的开发人员制作的,基准测试显示它的表现与eAccelerator相似,比APC更快。
那么哪个是最好的呢?
APC = 如果您想要一个易于使用的缓存,而且始终可以与PHP一起工作,那么这很棒。 eAccelerator = 如果您有时间维护它,使其保持最新并理解它的工作原理,它将表现得更快。长期支持不像APC那样确定,因为APC是由PHP开发人员完成的。

7

我测试了eAccelerator和XCache在Apache、Lighttp和Nginx上与一个WordPress站点一起使用。每次eAccelerator都获胜。

唯一的问题是Debian和Ubuntu缺少包。在PHP更新后,如果没有重新编译eAccelerator模块,服务器通常无法正常工作。

eAccelerator最后一个RC版本发布于2009/07/15(0.9.6 rc1),支持PHP 5.3。


6
我之前一直在使用php 5.1和5.2版本的APC,但是当我使用php 5.3版本的APC时,出现了很多(随机的)错误:奇怪的空白页面、随机的内存不足错误。当我禁用APC后,这些错误都消失了。但这并不是一个选项,因为它正在运行一个高流量的网站。
因此,我尝试了eaccelerator。到目前为止,它非常稳定,速度提升甚至比APC更大。APC的开发人员确实需要花些时间来修复bug。

1
我在使用APC和php 5.3时遇到了同样的问题。感谢您的评论。在我的设置中,没有任何缓存的PHP比使用APC更快且更可靠。空白页面和内存不足错误让我疯狂,直到我移除了APC。 - Paul D. Eden
从未弄清楚内核因为APC而杀死php-fpm的原因。 - vimdude

4

我认为除非您在网站上使用Zend Optimizer,否则APC是最好的选择。APC与Zend Optimizer不兼容,因此在这种情况下,您需要选择类似eAccelerator的东西。


如果您正在使用Zend Optimizer,那么您不需要其他任何东西,因为它还可以进行optcode缓存并公开APC兼容接口。 - txyoji

3
即使在中等负载下,eacceleator和xcache的表现也相当不错,但APC在严重请求强度下仍能保持稳定。如果我们在这里谈论几百个请求/秒,你将感觉不到差异。但是,如果您正在尝试响应更多,请一定坚持使用APC。特别是如果您的应用程序具有过于动态的特性,在此类负载下可能会导致锁定问题。可以参考http://www.ipsure.com/blog/2011/eaccelerator-as-zend-extension-high-load-averages-issue/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接