From 3429b18cc9748d8585fe24216df052abd332f3e3 Mon Sep 17 00:00:00 2001 From: "Jonathan.Wage" Date: Sun, 25 Nov 2007 20:45:33 +0000 Subject: [PATCH] Fixes #610 --- lib/Doctrine/Cache/Xcache.php | 99 +++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 lib/Doctrine/Cache/Xcache.php diff --git a/lib/Doctrine/Cache/Xcache.php b/lib/Doctrine/Cache/Xcache.php new file mode 100644 index 000000000..7195066d1 --- /dev/null +++ b/lib/Doctrine/Cache/Xcache.php @@ -0,0 +1,99 @@ +. + */ +Doctrine::autoload('Doctrine_Cache_Driver'); +/** + * Doctrine_Cache_Xcache + * + * @package Doctrine + * @subpackage Cache + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision: $ + * @author Dmitry Bakaleinik (dima@snaiper.net) + */ +class Doctrine_Cache_Xcache extends Doctrine_Cache_Driver +{ + /** + * constructor + * + * @param array $options associative array of cache driver options + */ + public function __construct($options = array()) + { + if ( !extension_loaded('xcache') ) { + throw new Doctrine_Cache_Exception('In order to use Xcache driver, the xcache extension must be loaded.'); + } + + parent::__construct($options); + } + + /** + * Test if a cache is available for the given id and (if yes) return it (false else) + * + * Note : return value is always "string" (unserialization is done by the core not by the backend) + * + * @param string $id cache id + * @param boolean $testCacheValidity if set to false, the cache validity won't be tested + * @return string cached datas (or false) + */ + public function fetch($id, $testCacheValidity = true) + { + return $this->contains($id) ? xcache_get($id) : false; + } + + /** + * Test if a cache is available or not (for the given id) + * + * @param string $id cache id + * @return mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record + */ + public function contains($id) + { + return xcache_isset($id); + } + + /** + * Save some string datas into a cache record + * + * Note : $data is always saved as a string + * + * @param string $data data to cache + * @param string $id cache id + * @param int $lifeTime if != false, set a specific lifetime for this cache record (null => infinite lifeTime) + * @return boolean true if no problem + */ + public function save($id, $data, $lifeTime = false) + { + return xcache_set($id, $data, $lifeTime); + } + + /** + * Remove a cache record + * + * @param string $id cache id + * @return boolean true if no problem + */ + public function delete($id) + { + return xcache_unset($id); + } +} \ No newline at end of file