diff options
author | alban <> | 2006-02-13 15:44:12 +0000 |
---|---|---|
committer | alban <> | 2006-02-13 15:44:12 +0000 |
commit | b24ba1d92683a609a614fe915d3424cbbf854052 (patch) | |
tree | e79e843c6608246485634edb46af461f38e6df91 | |
parent | 934069ca2164753f72783eaa7d9fd98e4280f2ec (diff) |
Let apc serialize object, to have atomic operation.
The downside, is that all value are convertued to ArrayObject to handle object inside the array to be serialized.
-rw-r--r-- | framework/Data/TAPCCache.php | 46 |
1 files changed, 3 insertions, 43 deletions
diff --git a/framework/Data/TAPCCache.php b/framework/Data/TAPCCache.php index c6b8deb4..cef684fb 100644 --- a/framework/Data/TAPCCache.php +++ b/framework/Data/TAPCCache.php @@ -102,10 +102,7 @@ class TAPCCache extends TModule implements ICache */
public function get($key)
{
- $ret=apc_fetch($this->_prefix.$key);
- if((boolean)apc_fetch($this->_prefix.$key.self::SERIALIZED))
- $ret=unserialize($ret);
- return $ret;
+ return apc_fetch($this->_prefix.$key);
}
/**
@@ -121,10 +118,8 @@ class TAPCCache extends TModule implements ICache */
public function set($key,$value,$expiry=0)
{
- if(!is_string($value)) {
- $value=serialize($value);
- apc_store($this->_prefix.$key.self::SERIALIZED,1,$expiry);
- }
+ if(is_array($value))
+ $value=new ArrayObject($value);
return apc_store($this->_prefix.$key,$value,$expiry);
}
@@ -167,7 +162,6 @@ class TAPCCache extends TModule implements ICache */
public function delete($key)
{
- apc_delete($this->_prefix.$key.self::SERIALIZED);
return apc_delete($this->_prefix.$key);
}
@@ -178,40 +172,6 @@ class TAPCCache extends TModule implements ICache {
return apc_clear_cache('user');
}
-
-
-
- /**
- * Retrieves a value from cache with a specified key.
- * Does not check wether to unserialized
- * @return mixed the value stored in cache, false if the value is not in the cache or expired.
- */
- public function getRaw($key)
- {
- return apc_fetch($this->_prefix.$key);
- }
-
- /**
- * Stores a value identified by a key into cache.
- * If the cache already contains such a key, the existing value and
- * expiration time will be replaced with the new ones.
- *
- * will only serialized pure object, not array, if your array contains object, you need to call {@link set}
- *
- * @param string the key identifying the value to be cached
- * @param mixed the value to be cached
- * @param integer the expiration time of the value,
- * 0 means never expire,
- * @return boolean true if the value is successfully stored into cache, false otherwise
- */
- public function setRaw($key,$value,$expiry=0)
- {
- if(is_object($value)) {
- $value=serialize($value);
- apc_store($this->_prefix.$key.self::SERIALIZED,1,$expiry);
- }
- return apc_store($this->_prefix.$key,$value,$expiry);
- }
}
|