有没有人有使用PHP加速器的经验,如MMCache或Zend Accelerator?我想知道,如果使用这两种方法中的任何一种,PHP都可以比得上更快的网络技术。另外,是否有权利使用这些?编译PHP?
编译PHP?
回答
请注意,Zend Optimizer和MMCache(或类似的应用程序)是完全不同的东西。虽然Zend Optimizer试图优化程序操作码,但MMCache会将脚本缓存在内存中并重新使用预编译的代码。
我做了一些基准,前一段时间,你可以找到在我的博客中results(德国虽然)。基本结果如下:
Zend Optimizer本身并没有帮助。其实我的脚本比没有优化器慢。
当涉及到缓存: *最快:eAccelerator * XCache * APC
和:你想安装一个操作码缓存!
例如: alt text http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png
这是它采取调用WordPress的主页10.000倍的时间。
编辑: BTW,eAccelerator本身包含一个优化器。
根据所执行的有多少你的PHP代码的实际执行和需要多长时间他们可以是一个真正的大胜利。它当然不会受到伤害,但是你看到的收益将取决于你的时间在哪里。
BTW mmcache已经被卷成不同的项目现在,名字我忘了,但谷歌会告诉你。
两者都很有趣,并且会提供速度提升,因为它们将源代码编译为二进制表示,然后由PHP引擎执行。
任何巨大的网站使用PHP(脸谱例如)运行在运行某种操作码缓存系统,如MMCache的。
问题是,根据您的系统,它们不是很容易设置。
MMCache已被弃用。我推荐使用http://pecl.php.net/package/APC或http://xcache.lighttpd.net/,这两者都可以为您提供可变的存储空间(如Memcache)。
你检查过Phalanger吗?它将PHP编译为.NET代码。这里有some benchmarks这表明它可以显着提高性能。
进一步基准:http://www.php-compiler.net/benchmarks – Eldros 2011-09-15 12:05:44
我在当天使用了Zend Accelerator(2004-ish)。它肯定在它可以使用的代码上获得了一些重要的性能胜利,但是不幸的是我使用的系统经常动态地加载代码然后对它进行评估,Zend Accelerator当时无法做很多事情(和我一样, d猜猜还是不行)。
不利的一面是,我们当然看到了一些缓存问题(这里的代码会改变,但与一个或其他原因更改的编译版本同步)。我想现在可能已经解决了这些问题。
反正我没有任何硬比较数字,肯定没有写在不同的环境相同的系统进行比较,但对于绝大多数的系统,PHP是不会杀你明智的性能。
我在我的生产服务器上使用APC,开箱即可使用。编译并将其添加到PHP中,并没有太多的调整。我每隔一段时间检查一次,只是为了回顾统计数据,但由于我使用MVC,所有主要文件(路由器,控制器等)很少在每天的基础上进行更改,以便代码保持编译并且运行效率非常高。
目前我们使用apc,免费,只是一个简单的即插即用在我们的服务器上。为我们的网站提供了巨大的性能提升,特别是随着项目规模的增加。我也禁用了apc.stat,因此它不检查代码是否已更新,所以无论何时我们需要更新实时网站上的代码,我们都会重新启动apache。
我使用APC,并且可以证明,如果您保持高缓存命中率,它可以显着减少应用程序服务器上的CPU和I/O负载。它不仅可以避免你编译,而且可以让你不必从磁盘读取php文件。 (即字节码直接从主内存中提供,因此速度非常快)它降低了渲染单个页面的速度,并增加了服务器每秒可处理的请求。
如果您使用的RedHat或CentOS的,安装APC是超级简单:
yum install php-devel httpd-devel php-pear
pecl install apc
echo "extension=apc.so" > /etc/php.d/apc.ini
# if you're using SELinux:
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so
/etc/init.d/httpd restart
你问缺点。唯一的缺点是它需要一些内存。 APC上的默认值是30MB,但可以调整,并且一点点内存的成本超过了本身的速度和响应速度。
BlaM的测试包括WordPress所做的所有数据库调用。当您拨打更少的数据库电话时,您会发现操作码缓存的性能提升更加显着。
同意。我也有其他一些测试。但我决定去“真实世界”的例子;) – BlaM 2009-05-19 08:16:14
- 1. 编译PHP扩展
- 2. 重新编译PHP
- 3. 编译PHP扩展
- 4. 编译PHP-IB的
- 5. 编译器更新后编译.php中的PHP致命错误
- 6. PHP脚本如何编译?
- 7. 开始编译PHP扩展
- 8. 编译C++使用PHP
- 9. PHP XSLTProcessor编译错误
- 10. php pregmatch - 编译失败
- 11. PHP日期编译器
- 12. 在Windows上编译PHP 7
- 13. 编译PHP错误与freetype
- 14. 编译PHP - bison版本?
- 15. PHP 5.2 preg_match()编译失败
- 16. PHP与旧的OpenSSL编译
- 17. 查看编译PHP文件
- 18. hiphop-php编译错误
- 19. Apache不能编译php
- 20. php的二进制代码(编译php)
- 21. 编译编译器错误编译GCC
- 22. 用python编译编译vim
- 23. 在编译期间编译
- 24. C#编译智能编译
- 25. 编译PHP 5.1.6与PDO的MySQL
- 26. PHP编译无内存限制
- 27. 使用UCLIBC交叉编译PHP
- 28. PHP 5.6升级编译的旧扩展
- 29. 重新编译并重新安装php
- 30. PHP与readline支持编译为Windows
您应该将标题更改为“加速PHP”。尽管关于编译PHP有许多问题,但这完全不是关于编译器的。 – 2009-09-26 13:15:39