mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-22 01:30:23 +08:00
Created ArrayCache class
- can be used to enable caching in a request without the need for any storage - useful for example in complex console tasks that should still be independed
This commit is contained in:
@@ -233,6 +233,7 @@ Yii Framework 2 Change Log
|
||||
- New #3911: Added `yii\behaviors\SluggableBehavior` that fills the specified model attribute with the transliterated and adjusted version to use in URLs (creocoder)
|
||||
- New #4193: Added `yii\filters\Cors` CORS filter to allow Cross Origin Resource Sharing (pgaultier)
|
||||
- New: Added `yii\base\InvalidValueException` (qiangxue)
|
||||
- New: Added `yii\caching\ArrayCache` (cebe)
|
||||
|
||||
|
||||
2.0.0-beta April 13, 2014
|
||||
|
||||
86
framework/caching/ArrayCache.php
Normal file
86
framework/caching/ArrayCache.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\caching;
|
||||
|
||||
/**
|
||||
* ArrayCache provides caching for the current request only by storing the values in an array.
|
||||
*
|
||||
* See [[Cache]] for common cache operations that ArrayCache supports.
|
||||
*
|
||||
* Unlike the [[Cache]], ArrayCache allows the expire parameter of [[set]], [[add]], [[mset]] and [[madd]] to
|
||||
* be a floating point number, so you may specify the time in milliseconds (e.g. 0.1 will be 100 milliseconds).
|
||||
*
|
||||
* @author Carsten Brandt <mail@cebe.cc>
|
||||
* @since 2.0
|
||||
*/
|
||||
class ArrayCache extends Cache
|
||||
{
|
||||
private $_cache;
|
||||
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function exists($key)
|
||||
{
|
||||
$key = $this->buildKey($key);
|
||||
return isset($this->_cache[$key]) && ($this->_cache[$key][1] === 0 || $this->_cache[$key][1] > microtime(true));
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function getValue($key)
|
||||
{
|
||||
if (isset($this->_cache[$key]) && ($this->_cache[$key][1] === 0 || $this->_cache[$key][1] > microtime(true))) {
|
||||
return $this->_cache[$key][0];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function setValue($key, $value, $duration)
|
||||
{
|
||||
$this->_cache[$key] = [$value, $duration === 0 ? 0 : microtime(true) + $duration];
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function addValue($key, $value, $duration)
|
||||
{
|
||||
if (isset($this->_cache[$key]) && ($this->_cache[$key][1] === 0 || $this->_cache[$key][1] > microtime(true))) {
|
||||
return false;
|
||||
} else {
|
||||
$this->_cache[$key] = [$value, $duration === 0 ? 0 : microtime(true) + $duration];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function deleteValue($key)
|
||||
{
|
||||
unset($this->_cache[$key]);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function flushValues()
|
||||
{
|
||||
$this->_cache = [];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user