From 42c7dd6fa3d271671a2067a5d4573b002c2a59c0 Mon Sep 17 00:00:00 2001 From: zYne Date: Wed, 31 Jan 2007 22:51:26 +0000 Subject: [PATCH] --- lib/Doctrine/Cache.php | 104 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 97 insertions(+), 7 deletions(-) diff --git a/lib/Doctrine/Cache.php b/lib/Doctrine/Cache.php index cdc59b949..a0eb98456 100644 --- a/lib/Doctrine/Cache.php +++ b/lib/Doctrine/Cache.php @@ -30,24 +30,77 @@ * @since 1.0 * @version $Revision$ */ -class Doctrine_Cache +class Doctrine_Cache extends Doctrine_Db_EventListener implements Countable, IteratorAggregate { - protected $_options = array('size' => 1000, - 'lifetime' => 3600, - ); + protected $_options = array('size' => 1000, + 'lifeTime' => 3600, + 'statsFile' => 'tmp/doctrine.cache.stats', + ); protected $_queries = array(); protected $_driver; + + public function __construct($driverName, $options = array()) + { + $class = 'Doctrine_Cache_' . ucwords(strtolower($driverName)); + + if ( ! class_exists($class)) { + throw new Doctrine_Cache_Exception('Cache driver ' . $driverName . ' could not be found.'); + } + + $this->_driver = new $class($options); + } /** - * process + * addQuery * * @param string $query sql query string * @return void */ - public function addQuery($query) + public function add($query, $namespace = null) { - $this->queries[] = $query; + if (isset($namespace)) { + $this->_queries[$namespace][] = $query; + } else { + $this->_queries[] = $query; + } + } + /** + * getQueries + * + * @param string $namespace optional query namespace + * @return array an array of sql query strings + */ + public function getAll($namespace = null) + { + if (isset($namespace)) { + if( ! isset($this->_queries[$namespace])) { + return array(); + } + + return $this->_queries[$namespace]; + } + + return $this->_queries; + } + /** + * pop + * + * pops a query from the stack + * @return string + */ + public function pop() + { + return array_pop($this->_queries); + } + /** + * count + * + * @return integer the number of queries in the stack + */ + public function count() + { + return count($this->_queries); } /** * save @@ -90,4 +143,41 @@ class Doctrine_Cache { file_put_contents($this->_statsFile, implode("\n", $this->queries)); } + + + public function onPreQuery(Doctrine_Db_Event $event) + { + + } + public function onQuery(Doctrine_Db_Event $event) + { + $this->addQuery($event->getQuery(), $event->getInvoker()->getName()); + } + + public function onPrePrepare(Doctrine_Db_Event $event) + { + + } + public function onPrepare(Doctrine_Db_Event $event) + { + + } + + public function onPreExec(Doctrine_Db_Event $event) + { + + } + public function onExec(Doctrine_Db_Event $event) + { + + } + + public function onPreExecute(Doctrine_Db_Event $event) + { + + } + public function onExecute(Doctrine_Db_Event $event) + { + $this->addQuery($event->getQuery(), $event->getInvoker()->getName()); + } }