|
MediaWiki
master
|
interface is intended to be more or less compatible with the PHP memcached client. More...


Public Member Functions | |
| __construct (array $params=[]) | |
| $params include: More... | |
| add ($key, $value, $exptime=0) | |
| clearLastError () | |
| Clear the "last error" registry. More... | |
| decr ($key, $value=1) | |
| Decrease stored value of $key by $value while preserving its TTL. More... | |
| delete ($key) | |
| Delete an item. More... | |
| deleteObjectsExpiringBefore ($date, $progressCallback=false) | |
| Delete all objects expiring before a certain date. More... | |
| get ($key, $flags=0, $oldFlags=null) | |
| 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... | |
| getScopedLock ($key, $timeout=6, $expiry=30, $rclass= '') | |
| Get a lightweight exclusive self-unlocking lock. More... | |
| getWithSetCallback ($key, $ttl, $callback, $flags=0) | |
| Get an item with the given key, regenerating and setting it if not found. More... | |
| incr ($key, $value=1) | |
| Increase stored value of $key by $value while preserving its TTL. More... | |
| incrWithInit ($key, $ttl, $value=1, $init=1) | |
| Increase stored value of $key by $value while preserving its TTL. More... | |
| lock ($key, $timeout=6, $expiry=6, $rclass= '') | |
| Acquire an advisory lock on a key string. More... | |
| makeGlobalKey () | |
| Make a global cache key. More... | |
| makeKey () | |
| Make a cache key, scoped to this instance's keyspace. More... | |
| makeKeyInternal ($keyspace, $args) | |
| Construct a cache key. More... | |
| merge ($key, callable $callback, $exptime=0, $attempts=10, $flags=0) | |
| Merge changes into the existing cache value (possibly creating a new one) More... | |
| modifySimpleRelayEvent (array $event) | |
| Modify a cache update operation array for EventRelayer::notify() More... | |
| set ($key, $value, $exptime=0, $flags=0) | |
| Set an item. More... | |
| setDebug ($bool) | |
| setLogger (LoggerInterface $logger) | |
| setMulti (array $data, $exptime=0) | |
| Batch insertion. More... | |
| unlock ($key) | |
| Release an advisory lock on a key string. More... | |
Public Attributes | |
| const | ERR_NO_RESPONSE = 1 |
| const | ERR_NONE = 0 |
| Possible values for getLastError() More... | |
| const | ERR_UNEXPECTED = 3 |
| const | ERR_UNREACHABLE = 2 |
| const | READ_LATEST = 1 |
| Bitfield constants for get()/getMulti() More... | |
| const | READ_VERIFIED = 2 |
| const | WRITE_CACHE_ONLY = 2 |
| const | WRITE_SYNC = 1 |
| Bitfield constants for set()/merge() More... | |
Public Attributes inherited from IExpiringStore | |
| const | TTL_DAY = 86400 |
| const | TTL_HOUR = 3600 |
| const | TTL_INDEFINITE = 0 |
| const | TTL_MINUTE = 60 |
| const | TTL_MONTH = 2592000 |
| const | TTL_PROC_LONG = 30 |
| const | TTL_PROC_SHORT = 3 |
| const | TTL_WEEK = 604800 |
| const | TTL_YEAR = 31536000 |
Protected Member Functions | |
| cas ($casToken, $key, $value, $exptime=0) | |
| Check and set an item. More... | |
| convertExpiry ($exptime) | |
| Convert an optionally relative time to an absolute time. More... | |
| convertToRelative ($exptime) | |
| Convert an optionally absolute expiry time to a relative time. More... | |
| debug ($text) | |
| doGet ($key, $flags=0) | |
| getWithToken ($key, &$casToken, $flags=0) | |
| isInteger ($value) | |
| Check if a value is an integer. More... | |
| mergeViaCas ($key, $callback, $exptime=0, $attempts=10) | |
| mergeViaLock ($key, $callback, $exptime=0, $attempts=10, $flags=0) | |
| setLastError ($err) | |
| Set the "last error" registry. More... | |
Protected Attributes | |
| callback null | $asyncHandler |
| string | $keyspace = 'local' |
| integer | $lastError = self::ERR_NONE |
| array[] | $locks = [] |
| Lock tracking. More... | |
| LoggerInterface | $logger |
Private Member Functions | |
| trackDuplicateKeys ($key) | |
| Track the number of times that a given key has been used. More... | |
Private Attributes | |
| bool | $debugMode = false |
| bool | $dupeTrackScheduled = false |
| array | $duplicateKeyLookups = [] |
| bool | $reportDupes = false |
interface is intended to be more or less compatible with the PHP memcached client.
backends for local hash array and SQL table included:
Definition at line 45 of file BagOStuff.php.
| BagOStuff::__construct | ( | array | $params = [] | ) |
$params include:
| array | $params |
Definition at line 96 of file BagOStuff.php.
References $params, and setLogger().
| BagOStuff::add | ( | $key, | |
| $value, | |||
$exptime = 0 |
|||
| ) |
| string | $key | |
| mixed | $value | |
| int | $exptime |
Definition at line 537 of file BagOStuff.php.
Referenced by incrWithInit(), lock(), and mergeViaCas().
|
protected |
Check and set an item.
| mixed | $casToken | |
| string | $key | |
| mixed | $value | |
| int | $exptime | Either an interval in seconds or a unix timestamp for expiry |
| Exception |
Definition at line 327 of file BagOStuff.php.
Referenced by mergeViaCas().
| BagOStuff::clearLastError | ( | ) |
Clear the "last error" registry.
Definition at line 615 of file BagOStuff.php.
Referenced by lock(), mergeViaCas(), and mergeViaLock().
|
protected |
Convert an optionally relative time to an absolute time.
| int | $exptime |
Definition at line 662 of file BagOStuff.php.
Referenced by SqlBagOStuff\cas(), HashBagOStuff\set(), and SqlBagOStuff\setMulti().
|
protected |
Convert an optionally absolute expiry time to a relative time.
If an absolute time is specified which is in the past, use a short expiry time.
| int | $exptime |
Definition at line 677 of file BagOStuff.php.
Referenced by RedisBagOStuff\add(), RedisBagOStuff\set(), and RedisBagOStuff\setMulti().
|
protected |
| string | $text |
Definition at line 649 of file BagOStuff.php.
Referenced by RedisBagOStuff\getMulti(), SqlBagOStuff\getMulti(), RedisBagOStuff\logRequest(), and RedisBagOStuff\setMulti().
| BagOStuff::decr | ( | $key, | |
$value = 1 |
|||
| ) |
Decrease stored value of $key by $value while preserving its TTL.
| string | $key | |
| int | $value |
Definition at line 572 of file BagOStuff.php.
|
abstract |
Delete an item.
| string | $key |
| BagOStuff::deleteObjectsExpiringBefore | ( | $date, | |
$progressCallback = false |
|||
| ) |
Delete all objects expiring before a certain date.
| string | $date | The reference date in MW format |
| callable | bool | $progressCallback | Optional, a function which will be called regularly during long-running operations with the percentage progress as the first parameter. |
Definition at line 492 of file BagOStuff.php.
|
abstractprotected |
| string | $key | |
| integer | $flags | Bitfield of BagOStuff::READ_* constants [optional] |
Referenced by get().
| BagOStuff::get | ( | $key, | |
$flags = 0, |
|||
$oldFlags = null |
|||
| ) |
Get an item with the given key.
If the key includes a determistic input hash (e.g. the key can only have the correct value) or complete staleness checks are handled by the caller (e.g. nothing relies on the TTL), then the READ_VERIFIED flag should be set. This lets tiered backends know they can safely upgrade a cached value to higher tiers using standard TTLs.
| string | $key | |
| integer | $flags | Bitfield of BagOStuff::READ_* constants [optional] |
| integer | $oldFlags | [unused] |
Definition at line 173 of file BagOStuff.php.
References $flags, doGet(), and trackDuplicateKeys().
Referenced by MediaWiki\Session\SessionBackend\__construct(), Title\newFromTextThrow(), and BagOStuffTest\testReportDupes().
| BagOStuff::getLastError | ( | ) |
Get the "last error" registered; clearLastError() should be called manually.
Definition at line 607 of file BagOStuff.php.
References $lastError.
Referenced by lock(), mergeViaCas(), and mergeViaLock().
| BagOStuff::getMulti | ( | array | $keys, |
$flags = 0 |
|||
| ) |
Get an associative array containing the item for each of the keys that have items.
| array | $keys | List of strings |
| integer | $flags | Bitfield; supports READ_LATEST [optional] |
Definition at line 503 of file BagOStuff.php.
|
final |
Get a lightweight exclusive self-unlocking lock.
Note that the same lock cannot be acquired twice.
This is useful for task de-duplication or to avoid obtrusive (though non-corrupting) DB errors like INSERT key conflicts or deadlocks when using LOCK IN SHARE MODE.
| string | $key | |
| int | $timeout | Lock wait timeout; 0 for non-blocking [optional] |
| int | $expiry | Lock expiry [optional]; 1 day maximum |
| string | $rclass | Allow reentry if set and the current lock used this value |
Definition at line 463 of file BagOStuff.php.
|
final |
Get an item with the given key, regenerating and setting it if not found.
If the callback returns false, then nothing is stored.
| string | $key | |
| int | $ttl | Time-to-live (seconds) |
| callable | $callback | Callback that derives the new value |
| integer | $flags | Bitfield of BagOStuff::READ_* constants [optional] |
Definition at line 143 of file BagOStuff.php.
|
protected |
| string | $key | |
| mixed | $casToken | |
| integer | $flags | Bitfield of BagOStuff::READ_* constants [optional] |
| Exception |
Definition at line 231 of file BagOStuff.php.
Referenced by mergeViaCas().
| BagOStuff::incr | ( | $key, | |
$value = 1 |
|||
| ) |
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) |
Definition at line 550 of file BagOStuff.php.
References $value, isInteger(), lock(), set(), and unlock().
Referenced by decr(), and incrWithInit().
| BagOStuff::incrWithInit | ( | $key, | |
| $ttl, | |||
$value = 1, |
|||
$init = 1 |
|||
| ) |
Increase stored value of $key by $value while preserving its TTL.
This will create the key with value $init and TTL $ttl instead if not present
| string | $key | |
| int | $ttl | |
| int | $value | |
| int | $init |
Definition at line 588 of file BagOStuff.php.
|
protected |
Check if a value is an integer.
| mixed | $value |
Definition at line 695 of file BagOStuff.php.
References $value.
Referenced by XCacheBagOStuff\doGet(), APCBagOStuff\doGet(), incr(), XCacheBagOStuff\set(), and APCBagOStuff\set().
| BagOStuff::lock | ( | $key, | |
$timeout = 6, |
|||
$expiry = 6, |
|||
$rclass = '' |
|||
| ) |
Acquire an advisory lock on a key string.
Note that if reentry is enabled, duplicate calls ignore $expiry
| string | $key | |
| int | $timeout | Lock wait timeout; 0 for non-blocking [optional] |
| int | $expiry | Lock expiry [optional]; 1 day maximum |
| string | $rclass | Allow reentry if set and the current lock used this value |
Definition at line 383 of file BagOStuff.php.
References $sleep, $timestamp, add(), clearLastError(), and getLastError().
Referenced by getScopedLock(), incr(), and mergeViaLock().
| BagOStuff::makeGlobalKey | ( | ) |
Make a global cache key.
| string | ... Key component (variadic) |
Definition at line 723 of file BagOStuff.php.
References makeKeyInternal().
Referenced by ChronologyProtector\__construct(), and BagOStuffTest\testMakeKey().
| BagOStuff::makeKey | ( | ) |
Make a cache key, scoped to this instance's keyspace.
| string | ... Key component (variadic) |
Definition at line 734 of file BagOStuff.php.
References makeKeyInternal().
Referenced by BagOStuffTest\testMakeKey().
| BagOStuff::makeKeyInternal | ( | $keyspace, | |
| $args | |||
| ) |
Construct a cache key.
| string | $keyspace | |
| array | $args |
Definition at line 707 of file BagOStuff.php.
References $args, $keyspace, and as.
Referenced by makeGlobalKey(), makeKey(), and BagOStuffTest\testMakeKey().
| BagOStuff::merge | ( | $key, | |
| callable | $callback, | ||
$exptime = 0, |
|||
$attempts = 10, |
|||
$flags = 0 |
|||
| ) |
Merge changes into the existing cache value (possibly creating a new one)
The callback function returns the new value given the current value (which will be false if not present), and takes the arguments: (this BagOStuff, cache key, current value, TTL). The TTL parameter is reference set to $exptime. It can be overriden in the callback.
| string | $key | |
| callable | $callback | Callback method to be executed |
| int | $exptime | Either an interval in seconds or a unix timestamp for expiry |
| int | $attempts | The amount of times to attempt a merge in case of failure |
| int | $flags | Bitfield of BagOStuff::WRITE_* constants |
| InvalidArgumentException |
Definition at line 270 of file BagOStuff.php.
References $flags, and mergeViaLock().
|
protected |
| string | $key | |
| callable | $callback | Callback method to be executed |
| int | $exptime | Either an interval in seconds or a unix timestamp for expiry |
| int | $attempts | The amount of times to attempt a merge in case of failure |
Definition at line 283 of file BagOStuff.php.
References $reportDupes, $success, $value, add(), cas(), clearLastError(), getLastError(), and getWithToken().
Referenced by WinCacheBagOStuff\merge(), MemcachedBagOStuff\merge(), and SqlBagOStuff\merge().
|
protected |
| string | $key | |
| callable | $callback | Callback method to be executed |
| int | $exptime | Either an interval in seconds or a unix timestamp for expiry |
| int | $attempts | The amount of times to attempt a merge in case of failure |
| int | $flags | Bitfield of BagOStuff::WRITE_* constants |
Definition at line 341 of file BagOStuff.php.
References $flags, $reportDupes, $success, $value, clearLastError(), getLastError(), lock(), set(), and unlock().
Referenced by merge().
| BagOStuff::modifySimpleRelayEvent | ( | array | $event | ) |
Modify a cache update operation array for EventRelayer::notify()
This is used for relayed writes, e.g. for broadcasting a change to multiple data-centers. If the array contains a 'val' field then the command involves setting a key to that value. Note that for simplicity, 'val' is always a simple scalar value. This method is used to possibly serialize the value and add any cache-specific key/values needed for the relayer daemon (e.g. memcached flags).
| array | $event |
Definition at line 642 of file BagOStuff.php.
|
abstract |
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 |
Referenced by add(), getWithSetCallback(), incr(), mergeViaLock(), and setMulti().
| BagOStuff::setDebug | ( | $bool | ) |
| bool | $bool |
Definition at line 127 of file BagOStuff.php.
|
protected |
Set the "last error" registry.
| int | $err | ERR_* constant |
Definition at line 624 of file BagOStuff.php.
Referenced by MemcachedPeclBagOStuff\checkResult(), RedisBagOStuff\getConnection(), RESTBagOStuff\handleError(), RedisBagOStuff\handleException(), SqlBagOStuff\handleReadError(), and SqlBagOStuff\handleWriteError().
| BagOStuff::setLogger | ( | LoggerInterface | $logger | ) |
| LoggerInterface | $logger |
Definition at line 120 of file BagOStuff.php.
References $logger.
Referenced by __construct().
| BagOStuff::setMulti | ( | array | $data, |
$exptime = 0 |
|||
| ) |
|
private |
Track the number of times that a given key has been used.
| string | $key |
Definition at line 186 of file BagOStuff.php.
Referenced by get().
| BagOStuff::unlock | ( | $key | ) |
Release an advisory lock on a key string.
| string | $key |
Definition at line 437 of file BagOStuff.php.
Referenced by getScopedLock(), incr(), and mergeViaLock().
|
protected |
Definition at line 59 of file BagOStuff.php.
|
private |
Definition at line 62 of file BagOStuff.php.
|
private |
Definition at line 71 of file BagOStuff.php.
|
private |
Definition at line 65 of file BagOStuff.php.
|
protected |
Definition at line 53 of file BagOStuff.php.
Referenced by MemcachedBagOStuff\makeKeyInternal(), and makeKeyInternal().
|
protected |
Definition at line 50 of file BagOStuff.php.
Referenced by getLastError().
|
protected |
Lock tracking.
Definition at line 47 of file BagOStuff.php.
|
protected |
Definition at line 56 of file BagOStuff.php.
Referenced by MultiWriteBagOStuff\doWrite(), and setLogger().
|
private |
Definition at line 68 of file BagOStuff.php.
Referenced by mergeViaCas(), and mergeViaLock().
| const BagOStuff::ERR_NO_RESPONSE = 1 |
Definition at line 75 of file BagOStuff.php.
Referenced by WANObjectCache\getLastError().
| const BagOStuff::ERR_NONE = 0 |
Possible values for getLastError()
Definition at line 74 of file BagOStuff.php.
Referenced by WANObjectCache\getLastError().
| const BagOStuff::ERR_UNEXPECTED = 3 |
Definition at line 77 of file BagOStuff.php.
Referenced by MemcachedPeclBagOStuff\checkResult(), RedisBagOStuff\handleException(), SqlBagOStuff\handleReadError(), SqlBagOStuff\handleWriteError(), and RESTBagOStuffTest\testGetBadServer().
| const BagOStuff::ERR_UNREACHABLE = 2 |
Definition at line 76 of file BagOStuff.php.
Referenced by RedisBagOStuff\getConnection(), WANObjectCache\getLastError(), SqlBagOStuff\handleReadError(), SqlBagOStuff\handleWriteError(), and RESTBagOStuffTest\testGetBadClient().
| const BagOStuff::READ_LATEST = 1 |
Bitfield constants for get()/getMulti()
Definition at line 80 of file BagOStuff.php.
Referenced by SiteStatsUpdate\getPendingDeltas().
| const BagOStuff::READ_VERIFIED = 2 |
Definition at line 81 of file BagOStuff.php.
Referenced by ParserCache\get(), and ParserCache\getKey().
| const BagOStuff::WRITE_CACHE_ONLY = 2 |
Definition at line 84 of file BagOStuff.php.
Referenced by MediaWiki\Session\SessionBackend\save(), and CachedBagOStuffTest\testWriteCacheOnly().
| const BagOStuff::WRITE_SYNC = 1 |
Bitfield constants for set()/merge()
Definition at line 83 of file BagOStuff.php.
Referenced by ChronologyProtector\shutdown(), and MultiWriteBagOStuffTest\testSyncMerge().