#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
в рабочей среде.