diff options
author | rojaro <> | 2009-09-30 19:48:11 +0000 |
---|---|---|
committer | rojaro <> | 2009-09-30 19:48:11 +0000 |
commit | 2cafbde28d28413155714d6abc90dc271768f189 (patch) | |
tree | a5884e454636b7e83ce91befceb1676391fe10ae | |
parent | 3199d1e928621f245b2c5d9ceea6b77090c5edeb (diff) |
merged TMemCache_Threshold.patch written by E.Letard from #155
-rw-r--r-- | framework/Caching/TMemCache.php | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/framework/Caching/TMemCache.php b/framework/Caching/TMemCache.php index 0f0ac26d..70a43a2d 100644 --- a/framework/Caching/TMemCache.php +++ b/framework/Caching/TMemCache.php @@ -73,6 +73,9 @@ * where {@link getHost Host} and {@link getPort Port} are configurable properties * of TMemCache. * + * Automatic compression of values may be used (using zlib extension) by setting {@link getThreshold Threshold} and {@link getMinSavings MinSavings} properties. + * NB : MemCache server(s) must be restarted to apply settings. Require (PECL memcache >= 2.0.0). + * * @author Qiang Xue <qiang.xue@gmail.com> * @version $Id$ * @package System.Caching @@ -114,6 +117,15 @@ class TMemCache extends TCache private $_timeout = 360; private $_retryInterval = 15; + /** + * @var integer Controls the minimum value length before attempting to compress automatically. + */ + private $_threshold=0; + + /** + * @var float Specifies the minimum amount of savings to actually store the value compressed. The supplied value must be between 0 and 1. Default value is 0.2 giving a minimum 20% compression savings. + */ + private $_minSavings=0.0; private $_status = true; @@ -165,6 +177,8 @@ class TMemCache extends TCache if($this->_cache->addServer($this->_host,$this->_port)===false) throw new TConfigurationException('memcache_connection_failed',$this->_host,$this->_port); } + if($this->_threshold!==0) + $this->_cache->setCompressThreshold($this->_threshold,$this->_minSavings); $this->_initialized=true; parent::init($config); } @@ -248,6 +262,46 @@ class TMemCache extends TCache } /** + * @return integer minimum value length before attempting to compress + */ + public function getThreshold() + { + return $this->_threshold; + } + + /** + * @param integer minimum value length before attempting to compress + * @throws TInvalidOperationException if the module is already initialized + */ + public function setThreshold($value) + { + if($this->_initialized) + throw new TInvalidOperationException('memcache_threshold_unchangeable'); + else + $this->_threshold=TPropertyValue::ensureInteger($value); + } + + /** + * @return float minimum amount of savings to actually store the value compressed + */ + public function getMinSavings() + { + return $this->_minSavings; + } + + /** + * @param float minimum amount of savings to actually store the value compressed + * @throws TInvalidOperationException if the module is already initialized + */ + public function setMinSavings($value) + { + if($this->_initialized) + throw new TInvalidOperationException('memcache_min_savings_unchangeable'); + else + $this->_minSavings=TPropertyValue::ensureFloat($value); + } + + /** * Retrieves a value from cache with a specified key. * This is the implementation of the method declared in the parent class. * @param string a unique key identifying the cached value |