我正在使用Symfony CMF,PHPCR和SncRedisBundle。我想爲PHPCR添加元數據和節點緩存到SncRedisBundle。PHPCR節點和元緩存覆蓋
出於測試目的,我修改了文件Snc \ RedisBundle \ DependencyInjection \ SncRedisExtension.php中的loadDoctrine函數(請參閱我已添加的代碼,1行的註釋「PHPCR元數據定義覆蓋」)。
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數據庫中看到元數據條目已填充。
現在我想覆蓋節點結果緩存,但我似乎無法找到一種方法來做到這一點。我無法找到用於覆蓋的服務定義名稱。任何人都可以爲我指出正確的方向嗎?
但並不明顯,因爲在文檔中,caches.meta和caches.nodes指向doctrine_cache.providers.xxx定義,其參數在同一配置文件中。 –
不知道我的理解..但如果你有一個想法如何改善文檔,請發送PR –