Blame view
sources/3rdparty/aws-sdk/lib/cachecore/cachemc.class.php
4.46 KB
|
03e52840d
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
<?php
/**
* Container for all Memcache-based cache methods. Inherits additional methods from <CacheCore>. Adheres
* to the ICacheCore interface.
*
* @version 2012.04.17
* @copyright 2006-2012 Ryan Parman
* @copyright 2006-2010 Foleeo, Inc.
* @copyright 2012 Amazon.com, Inc. or its affiliates.
* @copyright 2008-2010 Contributors
* @license http://opensource.org/licenses/bsd-license.php Simplified BSD License
* @link http://github.com/skyzyx/cachecore CacheCore
* @link http://getcloudfusion.com CloudFusion
* @link http://php.net/memcache Memcache
* @link http://php.net/memcached Memcached
*/
class CacheMC extends CacheCore implements ICacheCore
{
/**
* Holds the Memcache object.
*/
var $memcache = null;
/**
* Whether the Memcached extension is being used (as opposed to Memcache).
*/
var $is_memcached = false;
/*%******************************************************************************************%*/
// CONSTRUCTOR
/**
* Constructs a new instance of this class.
*
* @param string $name (Required) A name to uniquely identify the cache object.
* @param string $location (Optional) The location to store the cache object in. This may vary by cache method. The default value is NULL.
* @param integer $expires (Optional) The number of seconds until a cache object is considered stale. The default value is 0.
* @param boolean $gzip (Optional) Whether data should be gzipped before being stored. The default value is true.
* @return object Reference to the cache object.
*/
public function __construct($name, $location = null, $expires = 0, $gzip = true)
{
parent::__construct($name, null, $expires, $gzip);
$this->id = $this->name;
// Prefer Memcached over Memcache.
if (class_exists('Memcached'))
{
$this->memcache = new Memcached();
$this->is_memcached = true;
}
elseif (class_exists('Memcache'))
{
$this->memcache = new Memcache();
}
else
{
return false;
}
// Enable compression, if available
if ($this->gzip)
{
if ($this->is_memcached)
{
$this->memcache->setOption(Memcached::OPT_COMPRESSION, true);
}
else
{
$this->gzip = MEMCACHE_COMPRESSED;
}
}
// Process Memcached servers.
if (isset($location) && sizeof($location) > 0)
{
foreach ($location as $loc)
{
if (isset($loc['port']) && !empty($loc['port']))
{
$this->memcache->addServer($loc['host'], $loc['port']);
}
else
{
$this->memcache->addServer($loc['host'], 11211);
}
}
}
return $this;
}
/**
* Creates a new cache.
*
* @param mixed $data (Required) The data to cache.
* @return boolean Whether the operation was successful.
*/
public function create($data)
{
if ($this->is_memcached)
{
return $this->memcache->set($this->id, $data, $this->expires);
}
return $this->memcache->set($this->id, $data, $this->gzip, $this->expires);
}
/**
* Reads a cache.
*
* @return mixed Either the content of the cache object, or boolean `false`.
*/
public function read()
{
if ($this->is_memcached)
{
return $this->memcache->get($this->id);
}
return $this->memcache->get($this->id, $this->gzip);
}
/**
* Updates an existing cache.
*
* @param mixed $data (Required) The data to cache.
* @return boolean Whether the operation was successful.
*/
public function update($data)
{
if ($this->is_memcached)
{
return $this->memcache->replace($this->id, $data, $this->expires);
}
return $this->memcache->replace($this->id, $data, $this->gzip, $this->expires);
}
/**
* Deletes a cache.
*
* @return boolean Whether the operation was successful.
*/
public function delete()
{
return $this->memcache->delete($this->id);
}
/**
* Implemented here, but always returns `false`. Memcache manages its own expirations.
*
* @return boolean Whether the cache is expired or not.
*/
public function is_expired()
{
return false;
}
/**
* Implemented here, but always returns `false`. Memcache manages its own expirations.
*
* @return mixed Either the Unix time stamp of the cache creation, or boolean `false`.
*/
public function timestamp()
{
return false;
}
/**
* Implemented here, but always returns `false`. Memcache manages its own expirations.
*
* @return boolean Whether the operation was successful.
*/
public function reset()
{
return false;
}
}
/*%******************************************************************************************%*/
// EXCEPTIONS
class CacheMC_Exception extends CacheCore_Exception {}
|