编译PHP?

时间:2008-08-16 00:55:53

标签: php caching zend-optimizer

是否有人使用MMCacheZend Accelerator等PHP加速器?我想知道是否使用其中任何一种都可以使PHP与更快的网络技术相媲美。另外,使用这些还有权衡吗?

10 个答案:

答案 0 :(得分:13)

请注意,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本身包含一个优化器。

答案 1 :(得分:5)

MMCache已被弃用。我建议使用http://pecl.php.net/package/APChttp://xcache.lighttpd.net/,这两者都可以为您提供变量存储(如Memcache)。

答案 2 :(得分:3)

两者都很有趣并且会提供速度提升,因为它们将源代码编译成二进制表示,然后由PHP引擎执行。

任何运行PHP(例如Facebook)的大型网站都在运行某种操作码缓存系统,如MMCache。

问题在于根据您的系统设置它们并不容易。

答案 3 :(得分:2)

根据您实际执行的PHP代码的数量以及执行所花费的时间,这可能是一个非常大的胜利。它肯定不会受到伤害,但你看到的收益在很大程度上取决于你目前的时间花在哪里。

btw mmcache现在已经进入了一个不同的项目,我忘记了这个名字,但谷歌会告诉你。

答案 4 :(得分:2)

我在生产服务器上使用APC,开箱即可使用。编译它并将其添加到PHP,并且没有太多的调整要做。我每隔一段时间检查一次只是为了查看统计数据,但由于我使用MVC很多所有主要文件(路由器,控制器等)很少在日常基础上进行更改,因此代码保持编译并且运行非常有效。

答案 5 :(得分:1)

目前我们使用免费的apc,只是在我们的实时服务器上进行简单的即插即用。为我们的网站提供了巨大的性能提升,特别是随着项目规模的增加。我也禁用了apc.stat,因此它不会检查代码是否已更新,因此每当我们需要更新实时站点上的代码时,我们都会重新启动apache。

答案 6 :(得分:1)

我使用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,但它可以进行调整,而且一点点内存的成本可以通过提高速度和响应速度来实现。

答案 7 :(得分:1)

BlaM的测试包括WordPress所做的所有数据库调用。当您进行较少的数据库调用时,您会发现操作码缓存的性能提升更为显着。

答案 8 :(得分:0)

你看过Phalanger吗?它将PHP编译为.NET代码。以下是some benchmarks,表明它可以显着提高效果。

答案 9 :(得分:0)

我在当天使用了Zend Accelerator(2004-ish)。它肯定在它可以使用的代码上获得了一些显着的性能优势,但遗憾的是我使用的系统经常被设计为动态加载代码然后评估它,Zend Accelerator当时无法做很多事情(而且我' d猜还是不行。)

在不利方面,我们当然看到了一些缓存问题(代码会发生变化,但编译后的版本会因为某种原因而与变更同步)。我想这些问题现在可能已经解决了。

无论如何,我没有任何硬比较数字,当然也没有在不同的环境中编写相同的系统进行比较,但对于绝大多数系统而言,PHP并不会在性能上扼杀你。< / p>