我正在嘗試使用Oracle處理memcache查詢/結果緩存。它完美地對付mysql(用memcached控制檯驗證:./memcached -u nobody -m 40 -vv)。下面是在網絡/ index.php文件:獲取symfony查詢和結果緩存來對付Oracle 11g
$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(真):
結果緩存驅動程序未初始化。
有沒有人知道發生了什麼和/或是否需要其他配置才能使用Oracle DB後端?
謝謝。
如果您使用的var_dump()上'學說:: ATTR_RESULT_CACHE'修改'主義/ Connection.php', 1320行的'$ this-> getAttribute(Doctrine_Core :: ATTR_QUERY_CACHE)'和'$ this-> attributes'是什麼打印的? – greg0ire
$ this-> getAttribute(Doctrine_Core :: ATTR_QUERY_CACHE)爲NULL,Doctrine :: ATTR_RESULT_CACHE爲「150」。我無法獲得$ this->屬性上的var_dump,因爲每次我嘗試在任何symfony對象上使用var_dump都會發生。我發現一個循環遍歷491行的那些值並在那裏添加了回顯語句,因此打印出的鍵值對是: 16 => oracle 8 => 0 3 => 2 這有幫助嗎?謝謝! – dsomnus
哦,我剛剛注意到我要求你檢查'Doctrine/Connection.php'類,並且在你的代碼中,你設置了'Manager'的屬性。所以,我猜測問題是管理器設置沒有傳遞給連接,這是正常的行爲。如果您找不到原因,可以嘗試直接設置連接的屬性。請參閱[關於配置級別的這一節](http://www.doctrine-project.org/documentation/manual/1_2/hu/configuration#levels-of-configuration) – greg0ire