Wann sollte ich den Magento Compiler verwenden?


44

Ich sehe oft Leute, die erwähnen, dass sie die Compiler-Funktion von Magento verwenden.

Ich weiß nie und frage mich, in welchen Fällen Sie es verwenden sollten und wie viel Leistungsgewinn Sie dann haben.

[HAFTUNGSAUSSCHLUSS]: Da ich vor kurzem einen Bearbeitungsvorschlag dazu bekommen habe. Bei dieser Frage geht es nicht um das Magento2-Dicompile, sondern auch nicht geringfügig um Magento2.


1
Siehe meine Benchmarks mit dem Compiler: byte.nl/blog/should-i-use-the-magento-compiler
Willem

1
Ihre Apc-Konfiguration fehlt, außerdem haben wir jetzt das Opcache-Modul in den aktuellen Versionen und es gibt keine unterstützte PHP-Version, die mit Apc funktioniert. Software ändert sich, ebenso wie Lösungen und Problemumgehungen.
Flyingmana

Antworten:


43

[HAFTUNGSAUSSCHLUSS] Diese Antwort ist nur für den Compiler in Magento 1 bestimmt, der Compiler in Magento 2 hat einen völlig anderen Zweck / Effekt

Du solltest es niemals benutzen.

Weil PHP mehrere Mechanismen entwickelt hat, um Anwendungen zu verbessern, die viele Dateien enthalten.

Das bedeutet: Der PHP-opCache in der aktuellen PHP-Version verbessert die Leistung, wenn er richtig konfiguriert ist. Zum Beispiel, um ein ausreichend hohes Limit für zwischengespeicherte Dateien zu verwenden. Der opCache hat auch Verbesserungen für Funktionen, die auf das Dateisystem zugreifen und auf einer tieferen Ebene als aoe_classpathcache arbeiten, und verbessert die Leistung noch mehr.

Am Ende haben wir ein Autoloading, das ohne den Compiler nicht mehr als ein paar ms benötigt. Es gibt sogar Fälle, in denen der Compiler die Leistung beeinträchtigt hat. Ganz zu schweigen von den verrückten zeitaufwendigen Problemen beim Debuggen von Anwendungen mit dem Compiler.

Darüber hinaus verbessert der opCache nicht nur das automatische Laden, sondern auch das Laden von Vorlagen und Layoutdateien.

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


2
Sie schlagen also vor, die Kompilierung zu deaktivieren, kompilierte Dateien zu löschen und stattdessen opCache zu verwenden?
perissf

1
wenn Sie es zusammenfassen, ja
Flyingmana

3
Der Compiler ist in den Versionen 1.4.1.1, 1.4.2.0 und möglicherweise 1.5.1.0 am nützlichsten. Ab Version 1.5.1.0 wurde die Codeoptimierung gestartet, um die Effektivität zu verringern. Irgendwo um 1.6 oder 1.7 herum hat jemand A / B-Tests durchgeführt und festgestellt, dass dies das System unter bestimmten Serverkonfigurationen tatsächlich verlangsamen kann.
Fiasco Labs

3
Zwei Einstellungen für den PHP-Interpreter helfen bei der Unmenge von Dateien, die durchgeführt werden können, wenn Sie über Systemzugriff verfügen oder wenn Ihr Hosting-Provider die Änderung für Sie vornehmen kann -> realpath_cache_size=64kund realpath_cache_ttl=3600. 64k scheint der Sweet Spot zu sein, die Leute haben mehr empfohlen, aber Leistungstests zeigen, dass es eine Verschwendung von Speicher ist.
Fiasco Labs

2
@FiascoLabs Haben Sie einen Link / eine Quelle zu Ihren "A / B Testing" -Zahlen? Es wäre schön zu sehen.
Aram Papazian,

11

"Wann sollte ich den Magento Compiler verwenden?"

Wenn auf Ihrem System aus irgendeinem Grund kein PHP Accelerator installiert ist (unwahrscheinlich, aber möglich)

Wenn Sie eine sehr alte Version von Magento verwenden (das sollten Sie wirklich nicht tun )

Warum sollten Sie es deaktiviert lassen?

Ich stimme dem obigen Kommentar von Fiasco Labs voll und ganz zu. Obwohl Sie Ihre Magento-Versionsnummer nicht angegeben haben, gilt dies für alle Magento (CE) -Versionen über 1.6.1, wenn Sie den Compiler auf einem System aktivieren, das bereits über einen PHP-Beschleuniger (wie PHP-APC usw.) in Ihrem gesamten Shop verfügt Von den Admin-Seiten bis hin zum Auschecken durch den Kunden wird es messbar langsamer sein, schlimmer noch: Viele der Plugins / Mods, die Sie bei magento connect finden, funktionieren nicht richtig, wenn der Compiler aktiv ist.

Kurz gesagt, im Jahr 2014 gibt es keinen guten Grund, den Compiler zu aktivieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.