编译的PHP?
是否有人有使用MMCache或者Zend Accelerator等PHP加速器的经验?我想知道使用这两种方法是否可使PHP与更快的Web技术相提并论。另外,在使用这些工具时是否需要权衡?
解决方案
回答
取决于实际执行了多少PHP代码以及执行了多长时间,它们才是真正的大赢家。它当然不会受到伤害,但是我们看到的收益将在很大程度上取决于我们当前所花的时间。
btw mmcache现在已经卷入另一个项目,我忘记了名称,但是Google会告诉我们。
回答
两者都很有趣,因为它们会将源代码编译成二进制表示形式,然后由PHP引擎执行,因此它们将提高速度。
任何运行PHP的大型网站(例如Facebook)都在运行某种操作码缓存系统,例如MMCache。
问题是,根据系统来设置它们不是很容易。
回答
MMCache已被弃用。我建议使用http://pecl.php.net/package/APC或者http://xcache.lighttpd.net/,它们都可以为我们提供变量存储(例如Memcache)。
回答
你检查过法伦格吗?它将PHP编译为.NET代码。这里有一些基准测试表明它可以大大提高性能。
回答
我回头用Zend Accelerator(2004年代)。当然,它可以在可以使用的代码上取得显着的性能提升,但是不幸的是,我所使用的系统被设计为经常动态加载代码然后进行评估,而Zend Accelerator当时无法做很多事情( d猜测仍然不能)。
不利的一面是,我们当然看到了一些缓存问题(其中的代码可能会更改,但是编译后的版本会由于某种原因而与更改同步)。我想这些问题现在可能已经解决了。
无论如何,我没有任何硬性的比较数字,当然也没有在不同的环境中编写相同的系统进行比较,但是对于绝大多数系统而言,PHP不会杀死性能。
回答
我在生产服务器上使用APC,并且开箱即用时效果很好。对其进行编译并将其添加到PHP中,并没有太多要做的调整。我不时检查一下它只是为了查看统计信息,但是由于我使用了MVC,因此所有主要文件(路由器,控制器等)很少每天都会更改,因此代码可以保持编译并高效运行。
回答
当前,我们使用免费的apc,并且只是在实时服务器上的简单即插即用功能。为我们的站点带来了巨大的性能提升,尤其是随着项目规模的增加。我还禁用了apc.stat,因此它不会检查代码是否已更新,因此每当我们需要在实时站点上更新代码时,我们都会重新启动apache。
回答
请注意,Zend Optimizer和MMCache(或者类似的应用程序)是完全不同的东西。当Zend Optimizer尝试优化程序操作码时,MMCache将在内存中缓存脚本并重用预编译的代码。
我前段时间做了一些基准测试,我们可以在我的博客中找到结果(不过是德语)。基本结果:
仅Zend Optimizer根本没有帮助。实际上,我的脚本比没有优化器的脚本要慢。
关于缓存:
*最快:eAccelerator
- XCache
- APC
并且:我们确实想安装操作码缓存!
例如:
替代文字http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png
这是将wordpress主页调用10.000次所需的时间。
编辑:顺便说一句,eAccelerator包含一个优化器本身。
回答
我使用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进行的所有数据库调用。当我们进行更少的数据库调用时,我们会发现操作码缓存的性能提升更为显着。