MediaWiki
1.33.0
|
Class to store objects in the database. More...
Public Member Functions | |
__construct ( $params) | |
Constructor. More... | |
add ( $key, $value, $exptime=0, $flags=0) | |
Insert an item if it does not already exist. More... | |
changeTTL ( $key, $exptime=0, $flags=0) | |
Change the expiration on a key if it exists. More... | |
createTables () | |
Create shard tables. More... | |
delete ( $key, $flags=0) | |
Delete an item. More... | |
deleteAll () | |
Delete content of shard tables in every server. More... | |
deleteMulti (array $keys, $flags=0) | |
Batch deletion. More... | |
deleteObjectsExpiringBefore ( $timestamp, $progressCallback=false) | |
Delete objects from the database which expire before a certain date. More... | |
expireAll () | |
fetchBlobMulti (array $keys, $flags=0) | |
getMulti (array $keys, $flags=0) | |
Get an associative array containing the item for each of the keys that have items. More... | |
incr ( $key, $step=1) | |
Increase stored value of $key by $value while preserving its TTL. 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 $data, $expiry=0, $flags=0) | |
Batch insertion/replace. More... | |
Public Member Functions inherited from BagOStuff | |
__construct (array $params=[]) | |
$params include: More... | |
addBusyCallback (callable $workCallback) | |
Let a callback be run to avoid wasting time on special blocking calls. More... | |
clearLastError () | |
Clear the "last error" registry. More... | |
decr ( $key, $value=1) | |
Decrease stored value of $key by $value while preserving its TTL. 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... | |
getQoS ( $flag) | |
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... | |
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 ( $class, $component=null) | |
Make a global cache key. More... | |
makeKey ( $class, $component=null) | |
Make a cache key, scoped to this instance's keyspace. More... | |
makeKeyInternal ( $keyspace, $args) | |
Construct a cache key. More... | |
setDebug ( $bool) | |
setLogger (LoggerInterface $logger) | |
setMockTime (&$time) | |
unlock ( $key) | |
Release an advisory lock on a key string. More... | |
Protected Member Functions | |
cas ( $casToken, $key, $value, $exptime=0, $flags=0) | |
Check and set an item. More... | |
doGet ( $key, $flags=0, &$casToken=null) | |
garbageCollect () | |
getDB ( $serverIndex) | |
Get a connection to the specified database. More... | |
getMaxDateTime ( $db) | |
getTableByKey ( $key) | |
Get the server index and table name for a given key. More... | |
getTableNameByShard ( $index) | |
Get the table name for a given shard index. More... | |
handleReadError (DBError $exception, $serverIndex) | |
Handle a DBError which occurred during a read operation. More... | |
handleWriteError (DBError $exception, IDatabase $db=null, $serverIndex) | |
Handle a DBQueryError which occurred during a write operation. More... | |
isExpired ( $db, $exptime) | |
markServerDown (DBError $exception, $serverIndex) | |
Mark a server down due to a DBConnectionError exception. More... | |
serialize (&$data) | |
Serialize an object and, if possible, compress the representation. More... | |
silenceTransactionProfiler () | |
Returns a ScopedCallback which resets the silence flag in the transaction profiler when it is destroyed on the end of a scope, for example on return or throw. More... | |
unserialize ( $serial) | |
Unserialize and, if necessary, decompress an object. More... | |
usesMainDB () | |
waitForReplication () | |
Protected Member Functions inherited from BagOStuff | |
convertToExpiry ( $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) | |
expiryIsRelative ( $exptime) | |
getCurrentTime () | |
isInteger ( $value) | |
Check if a value is an integer. More... | |
mergeFlagMaps (array $bags) | |
Merge the flag maps of one or more BagOStuff objects into a "lowest common denominator" map. More... | |
mergeViaCas ( $key, $callback, $exptime=0, $attempts=10, $flags=0) | |
setLastError ( $err) | |
Set the "last error" registry. More... | |
Protected Attributes | |
array | $connFailureErrors = [] |
Exceptions. More... | |
array | $connFailureTimes = [] |
UNIX timestamps. More... | |
array | $conns |
int | $lastExpireAll = 0 |
int | $numServers |
int | $purgePeriod = 100 |
bool | $replicaOnly = false |
LoadBalancer null | $separateMainLB |
array[] | $serverInfos |
(server index => server config) More... | |
string[] | $serverTags |
(server index => tag/host name) More... | |
int | $shards = 1 |
int | $syncTimeout = 3 |
string | $tableName = 'objectcache' |
Protected Attributes inherited from BagOStuff | |
callable null | $asyncHandler |
int[] | $attrMap = [] |
Map of (ATTR_* class constant => QOS_* class constant) More... | |
callable[] | $busyCallbacks = [] |
string | $keyspace = 'local' |
int | $lastError = self::ERR_NONE |
ERR_* class constant. More... | |
array[] | $locks = [] |
Lock tracking. More... | |
LoggerInterface | $logger |
int | $syncTimeout |
Seconds. More... | |
Private Member Functions | |
insertMulti (array $data, $expiry, $flags, $replace) | |
setAndLogDBError (DBError $exception) | |
Additional Inherited Members | |
Public Attributes inherited from BagOStuff | |
const | READ_LATEST = 1 |
Bitfield constants for get()/getMulti() More... | |
const | READ_VERIFIED = 2 |
const | WRITE_CACHE_ONLY = 8 |
const | WRITE_SYNC = 4 |
Bitfield constants for set()/merge() More... | |
Public Attributes inherited from IExpiringStore | |
const | ATTR_EMULATION = 1 |
const | ATTR_SYNCWRITES = 2 |
const | ERR_NO_RESPONSE = 1 |
const | ERR_NONE = 0 |
const | ERR_UNEXPECTED = 3 |
const | ERR_UNREACHABLE = 2 |
const | QOS_EMULATION_SQL = 1 |
const | QOS_SYNCWRITES_BE = 2 |
const | QOS_SYNCWRITES_NONE = 1 |
const | QOS_SYNCWRITES_QC = 3 |
const | QOS_SYNCWRITES_SS = 4 |
const | QOS_UNKNOWN = INF |
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_SECOND = 1 |
const | TTL_WEEK = 604800 |
const | TTL_YEAR = 31536000 |
Class to store objects in the database.
Definition at line 39 of file SqlBagOStuff.php.
SqlBagOStuff::__construct | ( | $params | ) |
Constructor.
Parameters are:
array | $params |
Definition at line 106 of file SqlBagOStuff.php.
References $params, as, IExpiringStore\ATTR_EMULATION, IExpiringStore\ATTR_SYNCWRITES, captcha-old\count, IExpiringStore\QOS_EMULATION_SQL, IExpiringStore\QOS_SYNCWRITES_BE, IExpiringStore\QOS_SYNCWRITES_NONE, and tableName().
SqlBagOStuff::add | ( | $key, | |
$value, | |||
$exptime = 0 , |
|||
$flags = 0 |
|||
) |
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 BagOStuff.
Definition at line 400 of file SqlBagOStuff.php.
References $value, and insertMulti().
|
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 |
int | $flags | Bitfield of BagOStuff::WRITE_* constants |
Exception |
Reimplemented from BagOStuff.
Definition at line 406 of file SqlBagOStuff.php.
References $e, $tableName, $value, BagOStuff\convertToExpiry(), getDB(), getMaxDateTime(), getTableByKey(), handleWriteError(), list, and silenceTransactionProfiler().
SqlBagOStuff::changeTTL | ( | $key, | |
$expiry = 0 , |
|||
$flags = 0 |
|||
) |
Change the expiration on a key if it exists.
If an expiry in the past is given then the key will immediately be expired
string | $key | |
int | $expiry | TTL or UNIX timestamp |
int | $flags | Bitfield of BagOStuff::WRITE_* constants (since 1.33) |
Reimplemented from BagOStuff.
Definition at line 549 of file SqlBagOStuff.php.
References $e, $tableName, BagOStuff\convertToExpiry(), getDB(), getMaxDateTime(), getTableByKey(), handleWriteError(), list, and silenceTransactionProfiler().
SqlBagOStuff::createTables | ( | ) |
Create shard tables.
For use from eval.php.
Definition at line 838 of file SqlBagOStuff.php.
References $numServers, $shards, and getDB().
SqlBagOStuff::delete | ( | $key, | |
$flags = 0 |
|||
) |
Delete an item.
string | $key |
int | $flags | Bitfield of BagOStuff::WRITE_* constants |
Reimplemented from BagOStuff.
Definition at line 485 of file SqlBagOStuff.php.
References deleteMulti().
SqlBagOStuff::deleteAll | ( | ) |
Delete content of shard tables in every server.
Return true if the operation is successful, false otherwise.
Definition at line 711 of file SqlBagOStuff.php.
References $e, $numServers, $shards, getDB(), getTableNameByShard(), handleWriteError(), and silenceTransactionProfiler().
SqlBagOStuff::deleteMulti | ( | array | $keys, |
$flags = 0 |
|||
) |
Batch deletion.
string[] | $keys | List of keys |
int | $flags | Bitfield of BagOStuff::WRITE_* constants |
Reimplemented from BagOStuff.
Definition at line 448 of file SqlBagOStuff.php.
References $e, $keys, $tableName, as, getDB(), getTableByKey(), handleWriteError(), list, silenceTransactionProfiler(), and waitForReplication().
Referenced by delete().
SqlBagOStuff::deleteObjectsExpiringBefore | ( | $timestamp, | |
$progressCallback = false |
|||
) |
Delete objects from the database which expire before a certain date.
string | $timestamp | |
bool | callable | $progressCallback |
Reimplemented from BagOStuff.
Definition at line 633 of file SqlBagOStuff.php.
References $e, $keys, $numServers, $rows, $shards, as, getDB(), getTableNameByShard(), handleWriteError(), silenceTransactionProfiler(), and wfTimestamp().
Referenced by expireAll().
|
protected |
string | $key | |
int | $flags | Bitfield of BagOStuff::READ_* constants [optional] |
mixed | null | &$casToken | Token to use for check-and-set comparisons |
Reimplemented from BagOStuff.
Definition at line 237 of file SqlBagOStuff.php.
References $blob, $value, false, fetchBlobMulti(), and unserialize().
SqlBagOStuff::expireAll | ( | ) |
Definition at line 623 of file SqlBagOStuff.php.
References deleteObjectsExpiringBefore(), and wfTimestampNow().
Referenced by garbageCollect().
SqlBagOStuff::fetchBlobMulti | ( | array | $keys, |
$flags = 0 |
|||
) |
Definition at line 264 of file SqlBagOStuff.php.
References $e, $keys, $res, $tableName, as, BagOStuff\debug(), garbageCollect(), getDB(), getTableByKey(), handleReadError(), handleWriteError(), isExpired(), and list.
Referenced by doGet(), and getMulti().
|
protected |
Definition at line 606 of file SqlBagOStuff.php.
References expireAll().
Referenced by fetchBlobMulti(), and insertMulti().
|
protected |
Get a connection to the specified database.
int | $serverIndex |
MWException |
Definition at line 157 of file SqlBagOStuff.php.
References $type, DB_MASTER, DB_REPLICA, and DBO_TRX.
Referenced by cas(), changeTTL(), createTables(), deleteAll(), deleteMulti(), deleteObjectsExpiringBefore(), fetchBlobMulti(), incr(), and insertMulti().
|
protected |
IDatabase | $db |
Definition at line 598 of file SqlBagOStuff.php.
Referenced by cas(), changeTTL(), insertMulti(), and isExpired().
SqlBagOStuff::getMulti | ( | array | $keys, |
$flags = 0 |
|||
) |
Get an associative array containing the item for each of the keys that have items.
string[] | $keys | List of keys |
int | $flags | Bitfield; supports READ_LATEST [optional] |
Reimplemented from BagOStuff.
Definition at line 253 of file SqlBagOStuff.php.
References $blob, as, fetchBlobMulti(), and unserialize().
|
protected |
Get the server index and table name for a given key.
string | $key |
Definition at line 204 of file SqlBagOStuff.php.
References $serverTags, $shards, ArrayUtils\consistentHashSort(), getTableNameByShard(), and key.
Referenced by cas(), changeTTL(), deleteMulti(), fetchBlobMulti(), incr(), and insertMulti().
|
protected |
Get the table name for a given shard index.
int | $index |
Definition at line 227 of file SqlBagOStuff.php.
References $tableName, and tableName().
Referenced by deleteAll(), deleteObjectsExpiringBefore(), and getTableByKey().
|
protected |
Handle a DBError which occurred during a read operation.
DBError | $exception | |
int | $serverIndex |
Definition at line 773 of file SqlBagOStuff.php.
References markServerDown(), and setAndLogDBError().
Referenced by fetchBlobMulti().
Handle a DBQueryError which occurred during a write operation.
DBError | $exception | |
IDatabase | null | $db | DB handle or null if connection failed |
int | $serverIndex |
Exception |
Definition at line 789 of file SqlBagOStuff.php.
References markServerDown(), and setAndLogDBError().
Referenced by cas(), changeTTL(), deleteAll(), deleteMulti(), deleteObjectsExpiringBefore(), fetchBlobMulti(), incr(), and insertMulti().
SqlBagOStuff::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) [optional] |
Reimplemented from BagOStuff.
Definition at line 491 of file SqlBagOStuff.php.
References $e, $tableName, getDB(), getTableByKey(), handleWriteError(), isExpired(), list, silenceTransactionProfiler(), and unserialize().
|
private |
Definition at line 330 of file SqlBagOStuff.php.
References $data, $e, $rows, $tableName, $value, as, BagOStuff\convertToExpiry(), garbageCollect(), getDB(), getMaxDateTime(), getTableByKey(), handleWriteError(), list, serialize(), silenceTransactionProfiler(), and waitForReplication().
Referenced by add(), and setMulti().
|
protected |
IDatabase | $db | |
string | $exptime |
Definition at line 590 of file SqlBagOStuff.php.
References getMaxDateTime(), and wfTimestamp().
Referenced by fetchBlobMulti(), and incr().
|
protected |
Mark a server down due to a DBConnectionError exception.
DBError | $exception | |
int | $serverIndex |
Definition at line 817 of file SqlBagOStuff.php.
Referenced by handleReadError(), and handleWriteError().
SqlBagOStuff::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. Nothing is stored nor deleted if the callback returns false.
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 |
Reimplemented from BagOStuff.
Definition at line 540 of file SqlBagOStuff.php.
References BagOStuff\mergeViaCas(), and waitForReplication().
|
protected |
Serialize an object and, if possible, compress the representation.
On typical message and page data, this can provide a 3X decrease in storage requirements.
mixed | &$data |
Definition at line 736 of file SqlBagOStuff.php.
References $data.
Referenced by insertMulti().
SqlBagOStuff::set | ( | $key, | |
$value, | |||
$exptime = 0 , |
|||
$flags = 0 |
|||
) |
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 BagOStuff.
Definition at line 394 of file SqlBagOStuff.php.
References $value, and setMulti().
|
private |
DBError | $exception |
Definition at line 800 of file SqlBagOStuff.php.
References IExpiringStore\ERR_UNEXPECTED, IExpiringStore\ERR_UNREACHABLE, and BagOStuff\setLastError().
Referenced by handleReadError(), handleWriteError(), and waitForReplication().
SqlBagOStuff::setMulti | ( | array | $data, |
$exptime = 0 , |
|||
$flags = 0 |
|||
) |
Batch insertion/replace.
mixed[] | $data | Map of (key => value) |
int | $exptime | Either an interval in seconds or a unix timestamp for expiry |
int | $flags | Bitfield of BagOStuff::WRITE_* constants (since 1.33) |
Reimplemented from BagOStuff.
Definition at line 326 of file SqlBagOStuff.php.
References insertMulti().
Referenced by set().
|
protected |
Returns a ScopedCallback which resets the silence flag in the transaction profiler when it is destroyed on the end of a scope, for example on return or throw.
Definition at line 901 of file SqlBagOStuff.php.
References Profiler\instance(), and use.
Referenced by cas(), changeTTL(), deleteAll(), deleteMulti(), deleteObjectsExpiringBefore(), incr(), and insertMulti().
|
protected |
Unserialize and, if necessary, decompress an object.
string | $serial |
Definition at line 751 of file SqlBagOStuff.php.
References $ret.
Referenced by doGet(), getMulti(), and incr().
|
protected |
Definition at line 857 of file SqlBagOStuff.php.
References $serverInfos.
Referenced by waitForReplication().
|
protected |
Definition at line 861 of file SqlBagOStuff.php.
References BagOStuff\$busyCallbacks, $e, $syncTimeout, setAndLogDBError(), use, and usesMainDB().
Referenced by deleteMulti(), insertMulti(), and merge().
|
protected |
Exceptions.
Definition at line 66 of file SqlBagOStuff.php.
|
protected |
UNIX timestamps.
Definition at line 64 of file SqlBagOStuff.php.
|
protected |
Definition at line 62 of file SqlBagOStuff.php.
|
protected |
Definition at line 47 of file SqlBagOStuff.php.
|
protected |
Definition at line 45 of file SqlBagOStuff.php.
Referenced by createTables(), deleteAll(), and deleteObjectsExpiringBefore().
|
protected |
Definition at line 49 of file SqlBagOStuff.php.
|
protected |
Definition at line 55 of file SqlBagOStuff.php.
|
protected |
Definition at line 60 of file SqlBagOStuff.php.
|
protected |
(server index => server config)
Definition at line 41 of file SqlBagOStuff.php.
Referenced by usesMainDB().
|
protected |
(server index => tag/host name)
Definition at line 43 of file SqlBagOStuff.php.
Referenced by getTableByKey().
|
protected |
Definition at line 51 of file SqlBagOStuff.php.
Referenced by createTables(), deleteAll(), deleteObjectsExpiringBefore(), and getTableByKey().
|
protected |
Definition at line 57 of file SqlBagOStuff.php.
Referenced by waitForReplication().
|
protected |
Definition at line 53 of file SqlBagOStuff.php.
Referenced by cas(), changeTTL(), deleteMulti(), fetchBlobMulti(), getTableNameByShard(), incr(), and insertMulti().