Уведомление об устаревании ключа конфигурации Symfony 4.4 metadata_cache_driver

#symfony #doctrine-orm #symfony-4.4

#symfony #doctrine-orm #symfony-4.4

Вопрос:

Поскольку я обновил Symfony с 4.4.15 до 4.4.16, я получил следующее уведомление об устаревании:

Ключ конфигурации «metadata_cache_driver» устарел. Кэш массива PHP теперь автоматически регистрируется, когда %kernel.debug% имеет значение false.

Это странно, поскольку в официальных документах ничего не говорится об этом устаревании, кроме этого текста:

Устарело с версии 4.4: все типы кэширования Doctrine устарели, начиная с Symfony 4.4, и не будут доступны в Symfony 5.0 и выше. Замените их на type: service или type: pool и используйте любой из пулов / служб кэша, определенных с помощью 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: SymfonyComponentCacheDoctrineProvider
        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
  

Есть идеи, как избавиться от уведомления об устаревании?

Комментарии:

1. В этом вопросе нет ничего плохого, также не получите отрицательный ответ. Вот запрос на извлечение, который добавил уведомление об устаревании: github.com/doctrine/DoctrineBundle/pull/1196 . Это может дать некоторую информацию.

Ответ №1:

На самом деле устаревание было отменено: https://github.com/doctrine/DoctrineBundle/pull/1255

Поэтому, пожалуйста, не забудьте сохранить metadata_cache_driver конфигурацию для ваших производственных сред при обновлении до DoctrineBundle 2.2.1.

РЕДАКТИРОВАТЬ: эта функция была выпущена снова с версией 2.3.0 DoctrineBundle. Таким metadata_cache_driver образом, конфигурацию можно безопасно удалить для среды prod при использовании этой версии.

Комментарии:

1. Вы знаете, нужно ли сохранить для удаления записи metadata_cache_driver или удаление вообще необходимо в PROD? Получение следующего уведомления об устаревании для разработчиков: «Ключ конфигурации «metadata_cache_driver» устарел. Кэш массива PHP теперь автоматически регистрируется, когда %kernel.debug% имеет значение false»

2. @ninsky действительно, при использовании версии 2.3.0 вы можете удалить параметр конфигурации, поскольку функция была выпущена снова. Я обновил свой комментарий выше.

Ответ №2:

Начиная с DoctrineBundle 2.2.0, вы можете безопасно удалить metadata_cache_driver его из своей конфигурации. Замены нет; просто удалите его.

Запрос на извлечение, который ввел это уведомление об устаревании, дает некоторое объяснение: «Изменение необходимо, потому что определение собственного metadata_cache_driver с этого момента бесполезно».

Doctrine теперь используется PhpArrayAdapter в рабочей среде.