Removed the Model cache engine for architectural reasons, closes #4415

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@6853 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
the_undefined 2008-05-13 21:25:19 +00:00
parent 3db8b860d1
commit 5c1878afec
4 changed files with 0 additions and 319 deletions

View file

@ -214,16 +214,6 @@
* 'compress' => true, // [optional] compress data in Memcache (slower, but uses less memory)
* )
* );
*
* Cake Model
* Cache::config('default', array('engine' => 'Model' //[required]
* 'duration'=> 3600, //[optional]
* 'probability'=> 100, //[optional]
* 'className' => 'Cache', //[optional]
* 'fields' => array('data' => 'data', 'expires' => 'expires'), //[optional]
* 'serialize' => true, [optional]
* )
* );
*/
Cache::config('default', array('engine' => 'File'));
?>

View file

@ -214,16 +214,6 @@
* 'compress' => true, // [optional] compress data in Memcache (slower, but uses less memory)
* )
* );
*
* Cake Model
* Cache::config('default', array('engine' => 'Model' //[required]
* 'duration'=> 3600, //[optional]
* 'probability'=> 100, //[optional]
* 'className' => 'Cache', //[optional]
* 'fields' => array('data' => 'data', 'expires' => 'expires'), //[optional]
* 'serialize' => true, [optional]
* )
* );
*/
Cache::config('default', array('engine' => 'File'));
?>

View file

@ -1,152 +0,0 @@
<?php
/* SVN FILE: $Id$ */
/**
* Database Storage engine for cache
*
*
* PHP versions 4 and 5
*
* CakePHP(tm) : Rapid Development Framework <http://www.cakephp.org/>
* Copyright 2005-2008, Cake Software Foundation, Inc.
* 1785 E. Sahara Avenue, Suite 490-204
* Las Vegas, Nevada 89104
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @filesource
* @copyright Copyright 2005-2008, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
* @package cake
* @subpackage cake.cake.libs.cache
* @since CakePHP(tm) v 1.2.0.4933
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Database Storage engine for cache
*
* @package cake
* @subpackage cake.cake.libs.cache
*/
class ModelEngine extends CacheEngine {
/**
* settings
* className = name of the model to use, default => Cache
* fields = database fields that hold data and ttl, default => data, expires
*
* @var array
* @access public
*/
var $settings = array();
/**
* Model instance.
*
* @var object
* @access private
*/
var $__Model = null;
/**
* Model instance.
*
* @var object
* @access private
*/
var $__fields = array();
/**
* Initialize the Cache Engine
*
* Called automatically by the cache frontend
* To reinitialize the settings call Cache::engine('EngineName', [optional] settings = array());
*
* @param array $setting array of setting for the engine
* @return boolean True if the engine has been successfully initialized, false if not
* @access public
*/
function init($settings) {
parent::init($settings);
$defaults = array('className'=> 'CacheModel', 'fields'=> array('data', 'expires'));
$this->settings = array_merge($this->settings, $defaults, $settings);
$className = $this->settings['className'];
$this->__fields = $this->settings['fields'];
if (App::import($className)) {
$this->__Model = ClassRegistry::init($className);
} else {
$this->__Model = new Model(array('name' => $className));
}
return true;
}
/**
* Garbage collection. Permanently remove all expired and deleted data
*
* @access public
*/
function gc() {
return $this->__Model->deleteAll(array($this->__fields[1] => '<= '.time()));
}
/**
* Write data for key into cache
*
* @param string $key Identifier for the data
* @param mixed $data Data to be cached
* @param integer $duration How long to cache the data, in seconds
* @return boolean True if the data was succesfully cached, false on failure
* @access public
*/
function write($key, &$data, $duration) {
if (isset($this->settings['serialize'])) {
$data = serialize($data);
}
if ($data === '') {
return false;
}
$cache = array('id' => $key, $this->__fields[0] => $data, $this->__fields[1] => time() + $duration);
$result = false;
if ($this->__Model->save($cache)) {
$result = true;
}
return $result;
}
/**
* Read a key from the cache
*
* @param string $key Identifier for the data
* @return mixed The cached data, or false if the data doesn't exist, has expired, or if there was an error fetching it
* @access public
*/
function read($key) {
$data = $this->__Model->field($this->__fields[0], array($this->__Model->primaryKey => $key, $this->__fields[1] => '> '.time()));
if (!$data) {
return false;
}
if (isset($this->settings['serialize'])) {
return unserialize($data);
}
return $data;
}
/**
* Delete a key from the cache
*
* @param string $key Identifier for the data
* @return boolean True if the value was succesfully deleted, false if it didn't exist or couldn't be removed
* @access public
*/
function delete($key) {
return $this->__Model->del($key);
}
/**
* Delete all keys from the cache
*
* @return boolean True if the cache was succesfully cleared, false otherwise
* @access public
*/
function clear() {
return $this->__Model->deleteAll('1=1');
}
}
?>

View file

@ -1,147 +0,0 @@
<?php
/* SVN FILE: $Id$ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite>
* Copyright 2005-2008, Cake Software Foundation, Inc.
* 1785 E. Sahara Avenue, Suite 490-204
* Las Vegas, Nevada 89104
*
* Licensed under The Open Group Test Suite License
* Redistributions of files must retain the above copyright notice.
*
* @filesource
* @copyright Copyright 2005-2008, Cake Software Foundation, Inc.
* @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests
* @package cake.tests
* @subpackage cake.tests.cases.libs.cache
* @since CakePHP(tm) v 1.2.0.5434
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
*/
uses('cache', 'cache' . DS . 'model');
class CacheTestModel extends CakeTestModel {
var $name = 'CacheTestModel';
}
/**
* Short description for class.
*
* @package cake.tests
* @subpackage cake.tests.cases.libs.cache
*/
class ModelEngineTest extends CakeTestCase {
var $fixtures = array('core.cache_test_model');
function skip() {
$this->skipif (false, 'ModelEngineTest not implemented');
}
function setUp() {
Cache::config('model');
}
function start() {
parent::start();
Cache::config('model', array('engine' => 'Model', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'className' => 'CacheTestModel', //[optional]
'fields' => array('data', 'expires'), //[optional]
'serialize' => true, //[optional]
)
);
}
function testSettings() {
$settings = Cache::settings();
$expecting = array('prefix' => 'cake_',
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'className' => 'CacheTestModel', //[optional]
'fields' => array('data', 'expires'), //[optional]
'serialize' => true, //[optional]
'engine' => 'Model'
);
$this->assertEqual($settings, $expecting);
}
function testReadAndWriteCache() {
$result = Cache::read('test');
$expecting = '';
$this->assertEqual($result, $expecting);
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('test', $data, 1);
$this->assertTrue($result);
$result = Cache::read('test');
$expecting = $data;
$this->assertEqual($result, $expecting);
}
function testExpiry() {
sleep(2);
$result = Cache::read('test');
$this->assertFalse($result);
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('other_test', $data, 1);
$this->assertTrue($result);
sleep(2);
$result = Cache::read('other_test');
$this->assertFalse($result);
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('other_test', $data, "+1 second");
$this->assertTrue($result);
sleep(2);
$result = Cache::read('other_test');
$this->assertFalse($result);
}
function testDeleteCache() {
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test', $data);
$this->assertTrue($result);
$result = Cache::delete('delete_test');
$this->assertTrue($result);
}
function testDeleteAllCache() {
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test_1', $data);
$this->assertTrue($result);
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test_2', $data);
$this->assertTrue($result);
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test_3', $data);
$this->assertTrue($result);
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test_4', $data);
$this->assertTrue($result);
$result = Cache::clear();
$this->assertTrue($result);
}
function tearDown() {
Cache::config('default');
}
}
?>