DOCTRINE_NAMESPACE_CACHEKEY
DOCTRINE_NAMESPACE_CACHEKEY = 'DoctrineNamespaceCacheKey[%s]'
Array cache driver.
fetchMultiple(array $keys) : array<mixed,mixed>
Returns an associative array of values for keys is found in cache.
array | $keys | Array of keys to retrieve from cache |
Array of retrieved values, indexed by the specified keys. Values that couldn't be retrieved are not contained in this array.
saveMultiple(array $keysAndValues, integer $lifetime) : boolean
Returns a boolean value indicating if the operation succeeded.
array | $keysAndValues | Array of keys and values to save in cache |
integer | $lifetime | The lifetime. If != 0, sets a specific lifetime for these cache entries (0 => infinite lifeTime). |
TRUE if the operation was successful, FALSE if it wasn't.
save(string $id, mixed $data, integer $lifeTime) : boolean
Puts data into the cache.
If a cache entry with the given id already exists, its data will be replaced.
string | $id | The cache id. |
mixed | $data | The cache entry/data. |
integer | $lifeTime | The lifetime in number of seconds for this cache entry. If zero (the default), the entry never expires (although it may be deleted from the cache to make place for other entries). |
TRUE if the entry was successfully stored in the cache, FALSE otherwise.
getStats() : array|null
Retrieves cached information from the data store.
The server's statistics array has the following values:
hits Number of keys that have been requested and found present.
misses Number of items that have been requested and not found.
uptime Time that the server is running.
memory_usage Memory used by this server to store items.
An associative array with server's statistics if available, NULL otherwise.
doSaveMultiple(array $keysAndValues, integer $lifetime) : boolean
Default implementation of doSaveMultiple. Each driver that supports multi-put should override it.
array | $keysAndValues | Array of keys and values to save in cache |
integer | $lifetime | The lifetime. If != 0, sets a specific lifetime for these cache entries (0 => infinite lifeTime). |
TRUE if the operation was successful, FALSE if it wasn't.
doSave(string $id, string $data, integer $lifeTime) : boolean
Puts data into the cache.
string | $id | The cache id. |
string | $data | The cache entry/data. |
integer | $lifeTime | The lifetime. If != 0, sets a specific lifetime for this cache entry (0 => infinite lifeTime). |
TRUE if the entry was successfully stored in the cache, FALSE otherwise.
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace Doctrine\Common\Cache;
/**
* Array cache driver.
*
* @link www.doctrine-project.org
* @since 2.0
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
* @author David Abdemoulaie <dave@hobodave.com>
*/
class ArrayCache extends CacheProvider
{
/**
* @var array[] $data each element being a tuple of [$data, $expiration], where the expiration is int|bool
*/
private $data = [];
/**
* @var int
*/
private $hitsCount = 0;
/**
* @var int
*/
private $missesCount = 0;
/**
* @var int
*/
private $upTime;
/**
* {@inheritdoc}
*/
public function __construct()
{
$this->upTime = time();
}
/**
* {@inheritdoc}
*/
protected function doFetch($id)
{
if (! $this->doContains($id)) {
$this->missesCount += 1;
return false;
}
$this->hitsCount += 1;
return $this->data[$id][0];
}
/**
* {@inheritdoc}
*/
protected function doContains($id)
{
if (! isset($this->data[$id])) {
return false;
}
$expiration = $this->data[$id][1];
if ($expiration && $expiration < time()) {
$this->doDelete($id);
return false;
}
return true;
}
/**
* {@inheritdoc}
*/
protected function doSave($id, $data, $lifeTime = 0)
{
$this->data[$id] = [$data, $lifeTime ? time() + $lifeTime : false];
return true;
}
/**
* {@inheritdoc}
*/
protected function doDelete($id)
{
unset($this->data[$id]);
return true;
}
/**
* {@inheritdoc}
*/
protected function doFlush()
{
$this->data = [];
return true;
}
/**
* {@inheritdoc}
*/
protected function doGetStats()
{
return [
Cache::STATS_HITS => $this->hitsCount,
Cache::STATS_MISSES => $this->missesCount,
Cache::STATS_UPTIME => $this->upTime,
Cache::STATS_MEMORY_USAGE => null,
Cache::STATS_MEMORY_AVAILABLE => null,
];
}
}