Когда я должен использовать Magento Compiler


44

Я часто вижу, как люди упоминают, что они используют функцию компилятора Magento.

Я никогда не задаюсь вопросом, в каких случаях вы должны его использовать, и какой прирост производительности вы получаете.

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ]: Как я недавно получил предложение об изменении этого. Этот вопрос не о magento2 di-compile, он даже не касается magento2.


1
Смотрите мои тесты с компилятором: byte.nl/blog/should-i-use-the-magento-compiler
Willem

1
ваша конфигурация apc отсутствует, также у нас теперь есть модуль opcache в текущих версиях, и нет поддерживаемой версии php, которая больше работает с apc. Программное обеспечение меняется, как и решения и обходные пути.
Flyingmana

Ответы:


43

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ] Этот ответ предназначен только для компилятора в Magento 1, компилятор в Magento 2 имеет совершенно другое назначение / эффект

Вы должны использовать это никогда.

Потому что PHP разработал несколько механизмов для улучшения приложений, содержащих много файлов.

Означает: php opCache в текущей версии php улучшает производительность, если правильно настроен. Например, использовать достаточно высокий лимит для кэшируемых файлов. Также в opCache есть улучшения для функций, обращающихся к файловой системе, которые работают на более глубоком уровне, чем aoe_classpathcache, и еще больше повышают производительность.

В конце концов, у нас есть автозагрузка, которая не требует более нескольких мс без компилятора. Есть даже случаи, когда компилятор вредил производительности. Не говоря уже о сумасшедших трудоемких задачах по отладке приложений с помощью компилятора.

Кроме того, opCache не только улучшает автозагрузку, оптимизация функций файловой системы даже улучшает загрузку файлов шаблонов и макетов.

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


2
Итак, вы предлагаете отключить компиляцию, очистить скомпилированные файлы и использовать вместо этого opCache?
perissf

1
если обобщить, то да
Flyingmana

3
Компилятор - это kludge, наиболее полезный в версиях 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=64kи realpath_cache_ttl=3600. 64к, кажется, самое приятное место, люди рекомендуют больше, но тестирование производительности показывает, что это пустая трата памяти.
Fiasco Labs

2
@FiascoLabs У вас есть ссылка / источник на ваши цифры "A / B-тестирования"? Было бы приятно увидеть.
Арам Папазян

11

«Когда мне следует использовать Magento Compiler»

Если по какой-то причине в вашей системе не установлен PHP Accelerator (маловероятно, но возможно)

Если вы используете очень старую версию magento (вам действительно не следует)

Почему вы должны держать его отключенным?

Я полностью согласен с комментариями Fiasco Labs выше. Хотя вы не указали номер версии magento, это верно для всех версий magento (CE) более 1.6.1, если вы включаете компилятор в системе, в которой уже есть php-ускоритель (например, PHP-APC и т. Д.), Для всего вашего магазина от страниц администратора до регистрации клиента будет заметно медленнее, но, что еще хуже, многие плагины / моды, которые вы найдете в magento connect, не будут работать правильно при активном компиляторе.

Короче говоря, в 2014 году никогда не было веских причин для включения компилятора.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.