作者chweng ()
看板PHP
标题[请益] PHP加速器的几个讨论
时间Fri Dec 29 20:51:48 2006
既然板主提到了关於 PHP 加速器的议题,
在这边也顺便分享一下我的心得、以及一些疑问,
希望各位前辈能够一起讨论。
首先是,关於各个不同加速器的效果究竟如何?各有什麽优缺点?
先提供一篇英文文章给大家参考:Benchmarking PHP accelerators
http://www.ipersec.com/index.php?q=en/bench_ea_vs_apc
文中分别比较了 APC、eAccelerator 以及 ZEND 三种不同的加速器。
文中认为,eAccelerator 与 ZEND 的表现结果差不多,
但是挂着 beta 字样的 eAccelerator 似乎比较不是那麽的稳定。
(这篇文章应该是写於 eAccelerator 0.9.5 尚未推出的时候,
目前稳定度如何,尚待相关资料来佐证。)
至於 APC,是由 PHP 的核心发展成员所开发,并计划内建於 PHP6。
接下来第二段提到了测试的方法,用了三个不同的 script,
分别测试不同加速器的性能。
实验开始前,先进行暖机动作,使伺服器能够马上开始进行负载。
并且事先执行一次 script,确保 cache 工作已经完成。
接着分别用 ab2 指令进行三次测试,纪录其效能。
结果出炉,简单说明一下结论:
1. 越复杂的程式,可以获得越好的加速结果
2. 当你 include 一堆档案的时候,更显出加速器的重要性
3. 如果程式牵涉到磁碟或资料库的读取,那麽加速器的作用将不明显
再来讲第三个测试项目,测试的是 cache update 的时间间隔。
我们知道这些加速器的原理,都是先将程式编译後 cache 起来,需要时可以直接执行。
但是对於一个更新较为频繁的程式来说,这样的机制却可能造成各种无法预期的错误。
测试的结果,发现 eAccelerator 在这一项中大为领先 APC!
最後,该文的结论如下:
1. 如果你肯付钱、或是你需要技术支援,请选择 Zend
(不过个人用户单纯使用 Zend Optimizer 应该是不用钱吧?
至少我可以轻易在官网下载到)
2. 如果不符合前述条件,那麽 eAccelerator 是个不错的选择
3. 没有所谓最好的加速器,选择加速器的唯一方法,就是实际安装并测试之
好了,稍微分享完该文的观点之後,接下来是我的一点小小疑问…
首先是,eAccelerator 似乎没有现成 for win32 的版本,
虽然 source code 内附编译的方法,不过我还是弄不出来。
内附的编译方法只提到要用到 Visual Studio,
但微软官方目前只有 Visual Studio Express 2005 可供下载,
并且其实那只是数种不同开发环境的总称而已,
而不是真有 Visual Studio 这套编译器。
我随便挑了一个 Visual C++ 2005 Express Edition 来测试,
照他的方法弄了半天,还是编译不出个结果来,
不知道有没有人能够指导一下到底该怎麽做?
接着我还想知道,Zend 到底有没有内建在 PHP 当中?
我以 PHP 5.1.6 为例,测试 phpinfo() 输出的结果发现,
如果有挂上 Zend Optimizer,会出现如下资讯:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with Zend Extension Manager v1.0.10, Copyright (c) 2003-2006,
by Zend Technologies
with Zend Optimizer v3.0.2, Copyright (c) 1998-2006, by Zend Technologies
而如果没挂 Zend Optimizer,则只有:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
我知道所谓的 Zend Extension Manager,
应该是将不同版本的 PHP 与相应的 ZendOptimizer.dll 对应起来的机制。
而所谓的 Zend Engine 与 Zend Optimizer 有什麽不一样呢?
最後想知道的是,上面提到的文章中,测试的方法我想已经相当完善了,
但我还想知道,他使用的三个 script 是不是具有足够的代表性?
有没有更好的测试方式?或是有没有遗漏掉什麽细节?
以上一点小小的心得与问题,盼大家能够不吝发表高见。
--
╭─我的网站────────╮
│
http://www.chweng.idv.tw/ │
│ 我的相簿、我的部落格 │
╰─────────────╯
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.162.108.110
1F:→ ileadu:我之前也照eAccelerator的方法 去微软下载VC++Express来用 12/29 21:35
2F:→ ileadu:弄不出来… 怎麽没来个非官方,别人已经compile好的档案呢ꄠ 12/29 21:36
3F:推 EAFV:??可是我现在有一台主机就是WinXP挂eAccelerator的耶? 12/29 21:51