Php 让symfony查询和结果缓存与oracle 11g协同工作
我正在尝试让memcache查询/结果缓存与Oracle一起工作。它可以完美地针对mysql(通过memcached控制台验证:./memcached-u nobody-m 40-vv)。以下是web/index.php中的内容:Php 让symfony查询和结果缓存与oracle 11g协同工作,php,symfony1,doctrine,memcached,symfony-1.4,Php,Symfony1,Doctrine,Memcached,Symfony 1.4,我正在尝试让memcache查询/结果缓存与Oracle一起工作。它可以完美地针对mysql(通过memcached控制台验证:./memcached-u nobody-m 40-vv)。以下是web/index.php中的内容: $servers = array( 'host' => 'localhost', 'port' => 11211, 'persistent' => false ); $cacheDriver = new Doctrine_C
$servers = array(
'host' => 'localhost',
'port' => 11211,
'persistent' => false
);
$cacheDriver = new Doctrine_Cache_Memcache(array(
'servers' => $servers,
'compression' => false,
'prefix' => 'qc-')
);
$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cacheDriver);
$manager->setAttribute(Doctrine::ATTR_RESULT_CACHE, $cacheDriver);
$manager->setAttribute(Doctrine_Core::ATTR_RESULT_CACHE_LIFESPAN, 3600);
这在MySQL上可以正常工作,但在我使用->useResultCache(true)的第一个位置出现以下消息时失败:
结果缓存驱动程序未初始化
有人知道发生了什么和/或是否需要额外的配置才能使其与Oracle DB后端一起工作吗
谢谢。您应该尝试在\u APPConfiguration类中设置这些管理器属性,如下所述:
如果您在第1320行使用
doctor::ATTR\u RESULT\u CACHE
上的var\u dump()修改doctor/Connection.php
,$this->getAttribute(doctor\u Core::ATTR\u QUERY\u CACHE)
和$this->attributes
,打印的内容是什么?$this->getAttribute(doctor\u Core::ATTR\u QUERY\u CACHE)为空,doctor::ATTR\u RESULT\u CACHE为“150”。我无法在$this->attributes上获得var_转储,因为每次我尝试在任何symfony对象上使用它时,var_转储都会出错。我确实在第491行发现了一个循环,循环遍历这些值,并在其中添加了echo语句,所以打印出来的键值对是:16=>Oracle8=>03=>2这有帮助吗?谢谢哦,我刚刚注意到我要求您检查原则/Connection.php
类,并在您的代码中设置管理器的属性。所以,我想问题在于管理器设置没有传递给连接,这是正常的行为。如果找不到原因,可以尝试直接设置连接的属性。看见
class frontendConfiguration extends sfApplicationConfiguration
{
public function configureDoctrine(Doctrine_Manager $manager)
{
$servers = array(
'host' => 'localhost',
'port' => 11211,
'persistent' => false
);
$cacheDriver = new Doctrine_Cache_Memcache(array(
'servers' => $servers,
'compression' => false,
'prefix' => 'qc-')
);
$manager->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, $cacheDriver);
$manager->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE_LIFESPAN, 3600);
$manager->setAttribute(Doctrine_Core::ATTR_RESULT_CACHE, $cacheDriver);
$manager->setAttribute(Doctrine_Core::ATTR_RESULT_CACHE_LIFESPAN, 3600);
}
}