Я использую Symfony CMF, PHPCR и SncRedisBundle. Я хочу добавить кеширование метаданных и узлов для PHPCR в SncRedisBundle.Ограничения PHPCR и мета-кеширование
В целях тестирования я изменил функцию loadDoctrine в файле Snc \ RedisBundle \ DependencyInjection \ SncRedisExtension.php (см. Комментарий «переопределение метаданных PHPCR» для кода, который я добавил, 1 строка).
protected function loadDoctrine(array $config, ContainerBuilder $container)
{
foreach ($config['doctrine'] as $name => $cache) {
$client = new Reference(sprintf('snc_redis.%s_client', $cache['client']));
foreach ($cache['entity_managers'] as $em) {
$def = new Definition($container->getParameter('snc_redis.doctrine_cache.class'));
$def->setScope(ContainerInterface::SCOPE_CONTAINER);
$def->addMethodCall('setRedis', array($client));
if ($cache['namespace']) {
$def->addMethodCall('setNamespace', array($cache['namespace']));
}
$container->setDefinition(sprintf('doctrine.orm.%s_%s', $em, $name), $def);
}
foreach ($cache['document_managers'] as $dm) {
$def = new Definition($container->getParameter('snc_redis.doctrine_cache.class'));
$def->setScope(ContainerInterface::SCOPE_CONTAINER);
$def->addMethodCall('setRedis', array($client));
if ($cache['namespace']) {
$def->addMethodCall('setNamespace', array($cache['namespace']));
}
$container->setDefinition(sprintf('doctrine.odm.mongodb.%s_%s', $dm, $name), $def);
//PHPCR metadata definition override
$container->setDefinition(sprintf('doctrine_phpcr.odm.%s_%s', $dm, $name), $def);
}
}
}
Это работает для подмены кэша метаданных, и я могу видеть в базе данных Redis, что записи метаданных получить заселены.
Теперь я хочу переопределить кэш результатов узлов, но я не могу найти способ сделать это. Я не могу найти имя определения службы, которое будет использоваться для переопределения. Может ли кто-нибудь указать мне в правильном направлении?
Но это не так очевидно, так как в документации cache.meta и caches.nodes указывают на определения doctrine_cache.providers.xxx с параметрами в том же файле конфигурации. –
не уверен, что я понимаю .. но если у вас есть идея, как улучшить документы, пожалуйста, отправьте PR –