Php 让symfony查询和结果缓存与oracle 11g协同工作

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

我正在尝试让memcache查询/结果缓存与Oracle一起工作。它可以完美地针对mysql(通过memcached控制台验证:./memcached-u nobody-m 40-vv)。以下是web/index.php中的内容:

$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);
  }
}