Symfony 5 切换缓存适配器条件

问题描述

我需要根据 ENV 条件切换 Symfony 缓存适配器。就像设置了某个变量一样,使用“cache.adapter.apcu”或否则使用“cache.adapter.filesystem”。

有可能吗?文档对它没有真正的帮助。

P.S.:我们不可能通过创建一个全新的环境来做到这一点

解决方法

您似乎无法将缓存配置设置为使用这样的环境变量:

framework:
    cache:
        app: %env(resolve:CACHE_ADAPTER)%

提供缓存服务的是FrameworkBundle的约束。并且此约束不会“固定”(Using environment variables at compile time #25173)。

为了使其成为可能,您需要创建自己的缓存提供程序,它可以将所有参数传递给所需的缓存提供程序。您将可以在运行时访问环境变量,因此您可以将其用作知道要使用的提供程序的代理。