Автоматическое подключение TagAwareCache и внедрение в службу - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу настроить TagAwareCache с бэкэндом APCU. Результат должен быть введен в сервис.

Итак, у меня есть этот config.yml:

cache:
    pools:
        data_evaluator_cache_items_cache: # apcu backend
            adapter: cache.adapter.apcu
            public: true

data_evaluator_cache:
    class: Symfony\Component\Cache\Adapter\TagAwareAdapter
    arguments:
        $itemsPool: "@data_evaluator_cache_items_cache"
    public: true

AppBundle\Service\DataEvaluator:
    alias: data_evaluator
    arguments:
        $cache: "@data_evaluator_cache"

data_evaluator:
    class: AppBundle\Service\DataEvaluator
    public: true
    arguments:
        $cache: "@data_evaluator_cache"

Сервис выглядит так:

class DataEvaluator {
    public function __construct(Logger $l, AdapterInterface $cache) {
    }
} 

Из того, что я проверял, впрыскиваемый $cache действительно TagAwareAdapter, так что все в порядке.

Однако я сомневаюсь, что внутренний кэш элемента, передаваемый TagAwareCache, является кэшем apcu. Предметы в порядке, это мои теги.

Вот два скриншота веб-панели инструментов. Во-первых, я вижу, что data_evaluator_cache_items_cache используется для моих элементов кэша / полезных нагрузок. enter image description here

Следующий скриншот заставляет меня нервничать: cache.app используется для тегов! И cache.app разрешается до FilesystemCache.

enter image description here

Кстати: хорошо ли использовать APCU для предметов и меток? Мне не нужно распределенное кэширование или около того. Я слышал, что современный PhpFilesCache - это хорошо, начиная с PHP7 / opcache. У кого-нибудь есть практический опыт?

1 Ответ

0 голосов
/ 08 ноября 2018

Я решил это: К сожалению, небольшая ошибка в symfony docs . Это работает:

cache:
    pools:
        data_evaluator_cache_items_cache:
            adapter: cache.adapter.apcu
            public: true
        data_evaluator_cache_tags_cache:
            adapter: cache.adapter.apcu
            public: true

data_evaluator_cache:
    class: Symfony\Component\Cache\Adapter\TagAwareAdapter
    arguments:
        $itemsPool: "@data_evaluator_cache_items_cache"
        $tagsPool: "@data_evaluator_cache_tags_cache"
    public: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...