Symfony 4.4 metadata_cache_driver 配置键弃用通知

Posted

技术标签:

【中文标题】Symfony 4.4 metadata_cache_driver 配置键弃用通知【英文标题】:Symfony 4.4 metadata_cache_driver configuration key deprecation notice 【发布时间】:2021-02-20 19:01:45 【问题描述】:

自从我将 Symfony 从 4.4.15 升级到 4.4.16 后,我收到了以下弃用通知:

“metadata_cache_driver”配置键已弃用。 php 数组 现在当 %kernel.debug% 为 false 时会自动注册缓存。

这很奇怪,因为 official docs 除了这个文本之外,没有说任何关于此弃用的内容:

自 4.4 版起已弃用:所有 Doctrine 缓存类型都是 自 Symfony 4.4 起已弃用,并且在 Symfony 5.0 和 更高。将它们替换为 type: service 或 type: pool and use 使用 Symfony Cache 定义的任何缓存池/服务。

但我使用的是缓存类型池或服务。我的配置如下:

doctrine:  
    orm:  
        metadata_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool  

framework:
    cache:
        default_memcached_provider: 'memcached://localhost:11211'
        pools:
            doctrine.system_cache_pool:
                adapter: cache.adapter.memcached
                public: false
                default_lifetime: 86400

我什至尝试将缓存配置为这样的服务,这给了我同样的弃用通知:

doctrine:
    orm:    
        metadata_cache_driver:
            type: service
            id: doctrine.system_cache_provider

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

framework:
    cache:
        default_memcached_provider: 'memcached://localhost:11211'
        pools:
            doctrine.system_cache_pool:
                adapter: cache.adapter.memcached
                public: false
                default_lifetime: 86400

任何想法如何摆脱弃用通知?

【问题讨论】:

这个问题没有错,也不要投反对票。这是添加了弃用通知的拉取请求:github.com/doctrine/DoctrineBundle/pull/1196。这可能会提供一些信息。 【参考方案1】:

实际上已恢复弃用:https://github.com/doctrine/DoctrineBundle/pull/1255

因此,在升级到 DoctrineBundle 2.2.1 时,请确保为您的生产环境保留 metadata_cache_driver 配置。

编辑:该功能在 DoctrineBundle 2.3.0 版中再次发布。因此,在使用此版本时,可以为 prod 环境安全地删除 metadata_cache_driver 配置。

【讨论】:

您知道是保存删除 metadata_cache_driver 条目还是在 PROD 上完全需要删除?在 DEV 上收到以下弃用通知:“不推荐使用“metadata_cache_driver”配置键。现在,当 %kernel.debug% 为 false 时,会自动注册 PHP 数组缓存” @ninsky 确实在使用 2.3.0 版本时,您可以删除配置选项,因为该功能再次发布。我更新了上面的评论。【参考方案2】:

从 DoctrineBundle 2.2.0 开始,您可以安全地从配置中删除 metadata_cache_driver。没有替代品;删掉就好了。

引入此弃用通知的pull request 给出了一些解释:“需要更改,因为从现在开始定义自己的 metadata_cache_driver 将无用。”

Doctrine 现在在生产环境中使用PhpArrayAdapter

【讨论】:

以上是关于Symfony 4.4 metadata_cache_driver 配置键弃用通知的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 4.4 - 自定义错误模板不起作用

Symfony 4.4 - Swift Mailer 安装失败

无效的凭据消息登录 Symfony 4.4

在 Symfony 4.4 中使用 RedisTagAwareAdapter

为啥升级到 Symfony 4.4 后我不再看到错误预览页面?

Symfony 4.4 / NelmioApiDocBundle 4.0.1 注释问题