MediaWiki
master
|
Simple store for keeping values in an associative array for the current process. More...
Public Member Functions | |
__construct ( $params=[]) | |
Stable to call. More... | |
clear () | |
Clear all values in cache. More... | |
decr ( $key, $value=1, $flags=0) | |
Decrease stored value of $key by $value while preserving its TTL. More... | |
hasKey ( $key) | |
Does this bag have a non-null value for the given key? More... | |
incr ( $key, $value=1, $flags=0) | |
Increase stored value of $key by $value while preserving its TTL. More... | |
makeKeyInternal ( $keyspace, $components) | |
Make a cache key for the given keyspace and components. More... | |
setNewPreparedValues (array $valueByKey) | |
Make a "generic" reversible cache key from the given components. More... | |
![]() | |
__construct (array $params=[]) | |
add ( $key, $value, $exptime=0, $flags=0) | |
Insert an item if it does not already exist. More... | |
addBusyCallback (callable $workCallback) | |
Let a callback be run to avoid wasting time on special blocking calls. More... | |
changeTTL ( $key, $exptime=0, $flags=0) | |
Change the expiration on a key if it exists. More... | |
changeTTLMulti (array $keys, $exptime, $flags=0) | |
Change the expiration of multiple keys that exist. More... | |
clearLastError () | |
Clear the "last error" registry. More... | |
delete ( $key, $flags=0) | |
Delete an item. More... | |
deleteMulti (array $keys, $flags=0) | |
Batch deletion. More... | |
deleteObjectsExpiringBefore ( $timestamp, callable $progress=null, $limit=INF) | |
Delete all objects expiring before a certain date. More... | |
get ( $key, $flags=0) | |
Get an item with the given key. More... | |
getLastError () | |
Get the "last error" registered; clearLastError() should be called manually. More... | |
getMulti (array $keys, $flags=0) | |
Get an associative array containing the item for each of the keys that have items. More... | |
getQoS ( $flag) | |
getSegmentationSize () | |
getSegmentedValueMaxSize () | |
incrWithInit ( $key, $exptime, $value=1, $init=null, $flags=0) | |
Increase the value of the given key (no TTL change) if it exists or create it otherwise. More... | |
lock ( $key, $timeout=6, $expiry=6, $rclass='') | |
Acquire an advisory lock on a key string. More... | |
makeGlobalKey ( $class,... $components) | |
Make a cache key for the default keyspace and given components. More... | |
makeKey ( $class,... $components) | |
Make a cache key for the global keyspace and given components. More... | |
merge ( $key, callable $callback, $exptime=0, $attempts=10, $flags=0) | |
Merge changes into the existing cache value (possibly creating a new one) More... | |
set ( $key, $value, $exptime=0, $flags=0) | |
Set an item. More... | |
setMulti (array $valueByKey, $exptime=0, $flags=0) | |
Batch insertion/replace. More... | |
unlock ( $key) | |
Release an advisory lock on a key string. More... | |
![]() | |
getCurrentTime () | |
getLogger () | |
getScopedLock ( $key, $timeout=6, $expiry=30, $rclass='') | |
Get a lightweight exclusive self-unlocking lock. More... | |
getWithSetCallback ( $key, $exptime, $callback, $flags=0) | |
Get an item with the given key, regenerating and setting it if not found. More... | |
isKeyGlobal ( $key) | |
Check whether a cache key is in the global keyspace. More... | |
setDebug ( $enabled) | |
setLogger (LoggerInterface $logger) | |
setMockTime (&$time) | |
Public Attributes | |
const | KEY_CAS = 2 |
const | KEY_EXP = 1 |
const | KEY_VAL = 0 |
![]() | |
const | READ_LATEST = 1 |
Bitfield constants for get()/getMulti(); these are only advisory. More... | |
const | READ_VERIFIED = 2 |
const | WRITE_ALLOW_SEGMENTS = 16 |
const | WRITE_BACKGROUND = 64 |
const | WRITE_CACHE_ONLY = 8 |
const | WRITE_PRUNE_SEGMENTS = 32 |
const | WRITE_SYNC = 4 |
Bitfield constants for set()/merge(); these are only advisory. More... | |
Protected Member Functions | |
convertGenericKey ( $key) | |
Convert a "generic" reversible cache key into one for this cache. More... | |
doAdd ( $key, $value, $exptime=0, $flags=0) | |
Insert an item if it does not already exist. More... | |
doDelete ( $key, $flags=0) | |
Delete an item. More... | |
doGet ( $key, $flags=0, &$casToken=null) | |
doSet ( $key, $value, $exptime=0, $flags=0) | |
Set an item. More... | |
expire ( $key) | |
![]() | |
cas ( $casToken, $key, $value, $exptime=0, $flags=0) | |
Check and set an item. More... | |
debug ( $text) | |
doCas ( $casToken, $key, $value, $exptime=0, $flags=0) | |
Check and set an item. More... | |
doChangeTTL ( $key, $exptime, $flags) | |
doDeleteMulti (array $keys, $flags=0) | |
doGetMulti (array $keys, $flags=0) | |
Get an associative array containing the item for each of the keys that have items. More... | |
doSetMulti (array $data, $exptime=0, $flags=0) | |
getExpirationAsTimestamp ( $exptime) | |
Convert an optionally relative timestamp to an absolute time. More... | |
getExpirationAsTTL ( $exptime) | |
Convert an optionally absolute expiry time to a relative time. More... | |
getSerialized ( $value, $key) | |
Get the serialized form a value, using any applicable prepared value. More... | |
guessSerialValueSize ( $value, $depth=0, &$loops=0) | |
Estimate the size of a variable once serialized. More... | |
isInteger ( $value) | |
Check if a value is an integer. More... | |
isRelativeExpiration ( $exptime) | |
makeValueOrSegmentList ( $key, $value, $exptime, $flags) | |
Determine the entry (inline or segment list) to store under a key to save the value. More... | |
mergeViaCas ( $key, callable $callback, $exptime, $attempts, $flags) | |
resolveSegments ( $key, $mainValue) | |
Get and reassemble the chunks of blob at the given key. More... | |
serialize ( $value) | |
setLastError ( $err) | |
Set the "last error" registry. More... | |
unserialize ( $value) | |
![]() | |
componentsFromGenericKey ( $key) | |
Extract the components from a "generic" reversible cache key. More... | |
fieldHasFlags ( $field, $flags) | |
genericKeyFromComponents (... $components) | |
At a minimum, there must be a keyspace and collection name component. More... | |
mergeFlagMaps (array $bags) | |
Merge the flag maps of one or more BagOStuff objects into a "lowest common denominator" map. More... | |
proxyCall ( $method, $arg0Sig, $resSig, array $genericArgs) | |
Call a method on behalf of wrapper BagOStuff instance that uses "generic" keys. More... | |
Protected Attributes | |
mixed[] | $bag = [] |
int | $maxCacheKeys |
Max entries allowed. More... | |
![]() | |
callable[] | $busyCallbacks = [] |
int | $lastError = self::ERR_NONE |
ERR_* class constant. More... | |
array[] | $locks = [] |
Lock tracking. More... | |
array[] | $preparedValues = [] |
Map of (key => (PHP variable value, serialized value)) More... | |
int | $segmentationSize |
Bytes; chunk size of segmented cache values. More... | |
int | $segmentedValueMaxSize |
Bytes; maximum total size of a segmented cache value. More... | |
int | $syncTimeout |
Seconds. More... | |
![]() | |
callable null | $asyncHandler |
int[] | $attrMap = [] |
Map of (ATTR_* class constant => QOS_* class constant) More... | |
bool | $debugMode = false |
Whether to send debug log entries to the SPI logger instance. More... | |
string | $keyspace |
Default keyspace; used by makeKey() More... | |
LoggerInterface | $logger |
Private Attributes | |
string | $token |
CAS token prefix for this instance. More... | |
Static Private Attributes | |
static int | $casCounter = 0 |
CAS token counter. More... | |
Simple store for keeping values in an associative array for the current process.
Data will not persist and is not shared with other processes.
@newable
Definition at line 32 of file HashBagOStuff.php.
HashBagOStuff::__construct | ( | $params = [] | ) |
Stable to call.
array | $params | Additional parameters include:
|
-param array{logger?:Psr\Log\LoggerInterface,asyncHandler?:callable,keyspace?:string,reportDupes?:bool,syncTimeout?:int,segmentationSize?:int,segmentedValueMaxSize?:int,maxKeys?:int} $params
Definition at line 56 of file HashBagOStuff.php.
HashBagOStuff::clear | ( | ) |
Clear all values in cache.
Definition at line 141 of file HashBagOStuff.php.
|
protected |
Convert a "generic" reversible cache key into one for this cache.
string | $key | Keyspace-prepended list of encoded components as a colon-separated value |
Reimplemented from MediumSpecificBagOStuff.
Definition at line 185 of file HashBagOStuff.php.
HashBagOStuff::decr | ( | $key, | |
$value = 1 , |
|||
$flags = 0 |
|||
) |
Decrease stored value of $key by $value while preserving its TTL.
string | $key | |
int | $value | Value to subtract from $key (default: 1) [optional] |
int | $flags | Bit field of class WRITE_* constants [optional] |
Reimplemented from BagOStuff.
Definition at line 134 of file HashBagOStuff.php.
References incr().
|
protected |
Insert an item if it does not already exist.
string | $key | |
mixed | $value | |
int | $exptime | |
int | $flags | Bitfield of BagOStuff::WRITE_* constants (since 1.33) |
Reimplemented from MediumSpecificBagOStuff.
Definition at line 108 of file HashBagOStuff.php.
|
protected |
Delete an item.
string | $key | |
int | $flags | Bitfield of BagOStuff::WRITE_* constants |
Reimplemented from MediumSpecificBagOStuff.
Definition at line 116 of file HashBagOStuff.php.
Referenced by expire().
|
protected |
string | $key | |
int | $flags | Bitfield of BagOStuff::READ_* constants [optional] |
mixed | null | &$casToken | cas() token if MediumSpecificBagOStuff::PASS_BY_REF [returned] |
Reimplemented from MediumSpecificBagOStuff.
Definition at line 70 of file HashBagOStuff.php.
|
protected |
Set an item.
string | $key | |
mixed | $value | |
int | $exptime | Either an interval in seconds or a unix timestamp for expiry |
int | $flags | Bitfield of BagOStuff::WRITE_* constants |
Reimplemented from MediumSpecificBagOStuff.
Definition at line 90 of file HashBagOStuff.php.
References $casCounter, and MediumSpecificBagOStuff\getExpirationAsTimestamp().
Referenced by doAdd().
|
protected |
string | $key |
Definition at line 149 of file HashBagOStuff.php.
References doDelete(), BagOStuff\getCurrentTime(), and KEY_EXP.
HashBagOStuff::hasKey | ( | $key | ) |
Does this bag have a non-null value for the given key?
string | $key |
Definition at line 177 of file HashBagOStuff.php.
HashBagOStuff::incr | ( | $key, | |
$value = 1 , |
|||
$flags = 0 |
|||
) |
Increase stored value of $key by $value while preserving its TTL.
string | $key | Key to increase |
int | $value | Value to add to $key (default: 1) [optional] |
int | $flags | Bit field of class WRITE_* constants [optional] |
Reimplemented from BagOStuff.
Definition at line 122 of file HashBagOStuff.php.
References MediumSpecificBagOStuff\isInteger(), and KEY_VAL.
Referenced by decr().
HashBagOStuff::makeKeyInternal | ( | $keyspace, | |
$components | |||
) |
Make a cache key for the given keyspace and components.
Long components might be converted to respective hashes due to size constraints. In extreme cases, all of them might be combined into a single hash component.
Reimplemented from BagOStuff.
Definition at line 181 of file HashBagOStuff.php.
References BagOStuff\$keyspace, and BagOStuff\genericKeyFromComponents().
HashBagOStuff::setNewPreparedValues | ( | array | $valueByKey | ) |
Make a "generic" reversible cache key from the given components.
All previously prepared values will be cleared. Each of the new prepared values will be individually cleared as they get used by write operations for that key. This is done to avoid unchecked growth in PHP memory usage.
Example usage:
This is only useful if the caller needs an estimate of the serialized object sizes. The caller cannot know the serialization format and even if it did, it could be expensive to serialize complex values twice just to get the size information before writing them to cache. This method solves both problems by making the cache instance do the serialization and having it reuse the result when the cache write happens.
array | $valueByKey | Map of (cache key => PHP variable value to serialize) |
Reimplemented from MediumSpecificBagOStuff.
Definition at line 160 of file HashBagOStuff.php.
References MediumSpecificBagOStuff\guessSerialValueSize().
|
protected |
Definition at line 34 of file HashBagOStuff.php.
|
staticprivate |
|
protected |
Max entries allowed.
Definition at line 36 of file HashBagOStuff.php.
|
private |
CAS token prefix for this instance.
Definition at line 39 of file HashBagOStuff.php.
const HashBagOStuff::KEY_CAS = 2 |
Definition at line 46 of file HashBagOStuff.php.
Referenced by doGet().
const HashBagOStuff::KEY_EXP = 1 |
Definition at line 45 of file HashBagOStuff.php.
Referenced by expire().
const HashBagOStuff::KEY_VAL = 0 |
Definition at line 44 of file HashBagOStuff.php.