OpCache с Symfony

Я знаю, что вы можете использовать с Symfony APC или XCache Class Loader. К сожалению, на общем сервере, где я разместил свой код Symfony, активирован только OpCache.

Могу ли я использовать Symfony с OpCache? Если да, то как и какой код вставить в мой app.php, пожалуйста? Если нет, то почему пожалуйста?


person virtualmail    schedule 08.01.2016    source источник


Ответы (1)


Вам не нужно ничего делать в Symfony, чтобы включить opcache. Вам нужно только убедиться, что он включен в вашей конфигурации PHP (опция opcache_enable).

Забудьте о загрузчиках классов APC/XCache.

Загрузчики классов APC/XCache кэшируют пути к классам в памяти. Это может быть не обязательно хорошо для вашего приложения, так как оно будет делать дополнительные вызовы apc/xcache, что в некоторых случаях может быть на самом деле медленнее.

Оптимизируйте карту класса композитора.

Убедитесь, что вы отображаете оптимизированную карту класса композитора. в рабочей среде:

composer dump-autoload --optimize

Это сбросит карту классов в один файл. OPCache будет кэшировать этот файл, поэтому в большинстве случаев он будет более производительным, чем использование ApcClassLoader, поскольку будет только один вызов кеша.

person Jakub Zalas    schedule 08.01.2016
comment
Я всегда думал, что неиспользование APC для загрузчика классов приведет к значительной потере производительности, поэтому нужно протестировать без него, чтобы проверить разницу. - person COil; 08.01.2016
comment
Пока вы оптимизируете карту класса композитора и включаете opcache, вся карта должна помещаться в память (и загружаться только один раз). Связанный вопрос: stackoverflow.com/questions/13892614/ - person Jakub Zalas; 08.01.2016
comment
Логично, попробую. Спасибо, Якуб. - person COil; 08.01.2016
comment
Спасибо, Якуб, у меня ограниченный доступ по ssh, я не думаю, что смогу сделать это на общем сервере, который использую. Кроме того, если у вас есть хорошие ресурсы для понимания систем и механизмов кэширования, они могут быть мне полезны. - person virtualmail; 09.01.2016
comment
Вы можете обойти это, выполнив команды локально и загрузив результат на сервер. Я предлагаю вам сменить хостинг-провайдера. Невозможность выполнять команды во время развертывания в наши дни является серьезным ограничением. - person Jakub Zalas; 09.01.2016