我什么时候应该使用Magento编译器


44

我经常看到有人提到他们使用Magento的编译器功能。

我从不奇怪,您应该在哪种情况下使用它,然后获得多少性能提升。

[免责声明]:因为最近我对此有一个编辑建议。这个问题与magento2双编译无关,甚至与magento2无关。


1
请参阅我的编译器基准测试:byte.nl/blog/should-i-use-the-magento-compiler
Willem

1
您的apc配置丢失,我们现在也拥有当前版本的opcache模块,并且不再支持与apc一起使用的php版本。软件进行了更改,因此解决方案和解决方法也是如此。
Flyingmana 2014年

Answers:


43

[免责声明] 此答案仅适用于Magento 1中的编译器,Magento 2中的编译器具有完全不同的目的/效果

您永远不要使用它。

因为PHP已经开发了多种机制来改进包含大量文件的应用程序。

意思是:如果正确配置,当前php版本中的php opCache会带来更好的性能改进。例如,对缓存的文件使用足够高的限制。另外,opCache还改进了访问文件系统的功能,这些功能在比aoe_classpathcache更深的层次上起作用,并进一步提高了性能。

最后,我们有了一个自动加载功能,不需要编译器就不需要几毫秒的时间。甚至在某些情况下,编译器会损害性能。更不用说使用编译器调试应用程序的疯狂耗时的问题了。

另外,opCache不仅改善了自动加载,文件系统功能的优化甚至改善了模板和布局文件的加载。

http://php.net/manual/en/opcache.configuration.php


2
因此,您建议禁用编译,清除编译的文件,并改用opCache吗?
perissf 2014年

1
如果你把它总结一下,是的
Flyingmana

3
编译器对于1.4.1.1、1.4.2.0和1.5.1.0版本最为有用。从1.5.1.0开始,代码优化开始使其效果降低。在1.6或1.7左右的某个地方,有人进行了A / B测试,发现它实际上可以在某些服务器配置下降低系统速度。
Fiasco Labs

3
PHP解释器的两个设置可帮助您处理数十亿个文件,如果您具有系统访问权限,或者可以让您的托管服务提供商为您做更改,那么可以设置-> realpath_cache_size=64krealpath_cache_ttl=3600。64k似乎是最佳选择,人们推荐了更多的东西,但是性能测试表明它浪费了内存。
Fiasco Labs 2014年

2
@FiascoLabs您是否有指向“ A / B测试”数据的链接/源?很高兴看到。
Aram Papazian 2015年

11

“何时应使用Magento编译器”

如果由于某种原因您的系统未安装PHP Accelerator (不太可能,但可能)

如果您运行的是很旧的magento版本(您实际上不应该这样做)

为什么要禁用它?

我完全同意Fiasco Labs的上述评论。虽然您没有提供magento版本号,但是如果您在整个商店中已经具有php加速器(如PHP-APC等)的系统上启用了编译器,则对于1.6.1以上的所有magento(CE)版本都是如此。 ,从管理页面到客户结帐的速度将明显变慢,甚至更糟,在magento connect上找到的许多插件/模块在编译器处于活动状态时将无法正常运行。

简而言之,2014年从来没有任何理由启用编译器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.