@ff0xff

Как в symfony 4.3 настроить FilesystemAdapter на работу в папке с стандартным кэшем?

Доброе время суток, для кэширования данных в symfony 4 я использую FilesystemAdapter
По умолчанию я его использую довольно просто
$cachePool = new FilesystemAdapter();
Но когда я сохраняю кэш он сохраняется в папке /tmp/symfony-cache/
Меня такое положение дел не устраивает, я хочу что бы он сохранялся туда же где лежит основной кэш

./var/cache

Я разумеется посмотрел конструктор

FilesystemAdapter

public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, MarshallerInterface $marshaller = null)


Понятно что я должен передать правильный $directory но вот есть один нюанс.
symfony кладет свой кэш в зависимости от окружения dev или prod в разные папки.
И к то муже я хочу что бы кэш очищался при выполнение команды cache:clear

Подскажите как можно это реализовать:
  • Кэш должен ложится в разные папки в зависимости от окружения
  • Должен принудительно сбрасыватся при выполнение cache:clear
  • Вопрос задан
  • 289 просмотров
Решения вопроса 1
OxCom
@OxCom
SF4 по умолчанию использует файловый кеш (см. framework.cache). В данном случае вам нужно в конструкторе класса или методе контроллера, где нужен этот кеш, использовать DI
public function __construct(AdapterInterface $cache) { /* ... */ }


В случае, если у вас по умолчанию кеш отличный от файловой системы, то используйте DI и Autowire: в конфигурации framework.cache.pools опишите свой адаптер и используйте его с своем сервисе или что там у вас.
# config/packages/framework.yaml
framework:
  # ...
  cache:
    pools: 
      cache.mycache: 
        adapter: cache.adapter.filesystem
        # other options

Далее описываем сервис и в него передаем кеш через аргументы или берем из контейнера
$adapter = $container->get('app.cache.mycache');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы