assets
backup
bin
cache
grav-admin
images
logs
pages
system
tmp
user
vendor
antoligy
bin
composer
doctrine
cache
lib
Doctrine
Common
Cache
ApcCache.php
ApcuCache.php
ArrayCache.php
Cache.php
CacheProvider.php
ChainCache.php
ClearableCache.php
CouchbaseBucketCache.php
CouchbaseCache.php
ExtMongoDBCache.php
FileCache.php
FilesystemCache.php
FlushableCache.php
InvalidCacheId.php
LegacyMongoDBCache.php
MemcacheCache.php
MemcachedCache.php
MongoDBCache.php
MultiDeleteCache.php
MultiGetCache.php
MultiOperationCache.php
MultiPutCache.php
PhpFileCache.php
PredisCache.php
RedisCache.php
SQLite3Cache.php
Version.php
VoidCache.php
WinCacheCache.php
XcacheCache.php
ZendDataCache.php
LICENSE
README.md
UPGRADE.md
collections
donatj
dragonmantank
erusev
filp
gregwar
guzzlehttp
kodus
league
matthiasmullie
maximebf
miljar
monolog
nyholm
phive
php-http
pimple
psr
ralouphie
rockettheme
seld
symfony
twig
willdurand
autoload.php
webserver-configs
.htaccess
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE.txt
README.md
composer.json
composer.lock
index.php
now.json
robots.txt
113 lines
3.1 KiB
PHP
113 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace Doctrine\Common\Cache;
|
|
|
|
use InvalidArgumentException;
|
|
use MongoCollection;
|
|
use MongoDB\Collection;
|
|
use const E_USER_DEPRECATED;
|
|
use function trigger_error;
|
|
|
|
/**
|
|
* MongoDB cache provider.
|
|
*/
|
|
class MongoDBCache extends CacheProvider
|
|
{
|
|
/**
|
|
* The data field will store the serialized PHP value.
|
|
*/
|
|
public const DATA_FIELD = 'd';
|
|
|
|
/**
|
|
* The expiration field will store a MongoDate value indicating when the
|
|
* cache entry should expire.
|
|
*
|
|
* With MongoDB 2.2+, entries can be automatically deleted by MongoDB by
|
|
* indexing this field with the "expireAfterSeconds" option equal to zero.
|
|
* This will direct MongoDB to regularly query for and delete any entries
|
|
* whose date is older than the current time. Entries without a date value
|
|
* in this field will be ignored.
|
|
*
|
|
* The cache provider will also check dates on its own, in case expired
|
|
* entries are fetched before MongoDB's TTLMonitor pass can expire them.
|
|
*
|
|
* @see http://docs.mongodb.org/manual/tutorial/expire-data/
|
|
*/
|
|
public const EXPIRATION_FIELD = 'e';
|
|
|
|
/** @var CacheProvider */
|
|
private $provider;
|
|
|
|
/**
|
|
* This provider will default to the write concern and read preference
|
|
* options set on the collection instance (or inherited from MongoDB or
|
|
* MongoClient). Using an unacknowledged write concern (< 1) may make the
|
|
* return values of delete() and save() unreliable. Reading from secondaries
|
|
* may make contain() and fetch() unreliable.
|
|
*
|
|
* @see http://www.php.net/manual/en/mongo.readpreferences.php
|
|
* @see http://www.php.net/manual/en/mongo.writeconcerns.php
|
|
*
|
|
* @param MongoCollection|Collection $collection
|
|
*/
|
|
public function __construct($collection)
|
|
{
|
|
if ($collection instanceof MongoCollection) {
|
|
@trigger_error('Using a MongoCollection instance for creating a cache adapter is deprecated and will be removed in 2.0', E_USER_DEPRECATED);
|
|
$this->provider = new LegacyMongoDBCache($collection);
|
|
} elseif ($collection instanceof Collection) {
|
|
$this->provider = new ExtMongoDBCache($collection);
|
|
} else {
|
|
throw new InvalidArgumentException('Invalid collection given - expected a MongoCollection or MongoDB\Collection instance');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doFetch($id)
|
|
{
|
|
return $this->provider->doFetch($id);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doContains($id)
|
|
{
|
|
return $this->provider->doContains($id);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doSave($id, $data, $lifeTime = 0)
|
|
{
|
|
return $this->provider->doSave($id, $data, $lifeTime);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doDelete($id)
|
|
{
|
|
return $this->provider->doDelete($id);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doFlush()
|
|
{
|
|
return $this->provider->doFlush();
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doGetStats()
|
|
{
|
|
return $this->provider->doGetStats();
|
|
}
|
|
}
|