Я использую Doctrine 1.2 с Zend Framework, и он работает просто отлично.Теперь я хочу начать использовать возможности кэширования результатов и кэширования запросов, чтобы уменьшить нагрузку на сервер БД, на котором работает приложение.О, я также использую Zend_Application и помещаю код в модули.
В любом случае я настраиваю свои подключения к Doctrine в общем файле Bootstrap.php для самого приложения:
protected function _initDoctrine()
{
Zend_Loader_Autoloader::getInstance()->registerNamespace('Doctrine')->pushAutoloader(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();
foreach ($this->_options['doctrine']['attr'] as $key => $val) {
$manager->setAttribute(constant("Doctrine::$key"), $val);
}
$conn = Doctrine_Manager::connection($this->_options['doctrine']['dsn'], 'doctrine');
Doctrine::loadModels($this->_options["doctrine"]["module_directories"]);
}
СейчасЯ потратил некоторое время на чтение документации для кэширования запросов и результатов для Doctrine и в поисках примеров использования кэширования Doctrine.То, что я нашел, кажется очень простым.Я добавил этот код в файл Bootstrap.php, который содержит метод _initDoctrine () внутри _initDoctrine ()
// Set up some caching
$cacheConn = Doctrine_Manager::connection(new PDO('sqlite::memory:'));
$cacheDriver = new Doctrine_Cache_Db(array(
'connection' => $cacheConn,
'tableName' => 'cache'));
$cacheDriver->createTable();
$manager->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, $cacheDriver);
То, что я сейчас нахожу, заключается в том, что все соединение приложения теперь думает, что оно используетSqlite вместо MySQL, как это должно быть.Это кажется странным, так как я только устанавливаю атрибут ATTR_QUERY_CACHE.
Советы по решению этой проблемы будут весьма признательны.