如何在 Symfony5 中为学说配置 apcu

dom*_*ber 5 doctrine symfony symfony5

在 Symfony4 中,我使用以下配置来进行学说 apcu 缓存:

doctrine:
    orm:
        auto_mapping: true
        auto_generate_proxy_classes: false
        metadata_cache_driver: apcu
        query_cache_driver: apcu
        result_cache_driver: apcu
Run Code Online (Sandbox Code Playgroud)

升级到 Symfony5 后,出现错误:

为实体管理器“default”中的缓存“metadata_cache”配置的“apc”类型的未知缓存。

将其更改为以下配置时,它可以工作:

doctrine:
    orm:
        auto_mapping: true
        auto_generate_proxy_classes: false
        metadata_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool
        query_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool
        result_cache_driver:
            type: pool
            pool: doctrine.result_cache_pool
Run Code Online (Sandbox Code Playgroud)

但是我现在使用什么样的缓存?我怎样才能将它切换到apcu?

Ale*_*lex 10

我在 Symfony 4.4.5 中遇到了同样的问题

您应该首先安装Symfony 缓存组件。然后,您应该按如下方式配置缓存池、服务和原则缓存:

doctrine:
    orm:
        auto_generate_proxy_classes: false
        metadata_cache_driver:
            type: service
            id: doctrine.system_cache_provider
        query_cache_driver:
            type: service
            id: doctrine.system_cache_provider
        result_cache_driver:
            type: service
            id: doctrine.result_cache_provider

services:
    doctrine.result_cache_provider:
        class: Symfony\Component\Cache\DoctrineProvider
        public: false
        arguments:
            - '@doctrine.result_cache_pool'
    doctrine.system_cache_provider:
        class: Symfony\Component\Cache\DoctrineProvider
        public: false
        arguments:
            - '@doctrine.system_cache_pool'

framework:
    cache:
        pools:
            doctrine.result_cache_pool:
                adapter: cache.adapter.apcu
            doctrine.system_cache_pool:
                adapter: cache.adapter.apcu
Run Code Online (Sandbox Code Playgroud)

上面的配置取自here。