MediaWiki
1.32.5
|
Service for storing and loading Content objects. More...
Public Member Functions | |
__construct (LoadBalancer $dbLoadBalancer, WANObjectCache $cache, $wikiId=false) | |
compressData (&$blob) | |
If $wgCompressRevisions is enabled, we will compress data. More... | |
decompressData ( $blob, array $blobFlags) | |
Re-converts revision text according to its flags. More... | |
expandBlob ( $raw, $flags, $cacheKey=null) | |
Expand a raw data blob according to the flags given. More... | |
getBlob ( $blobAddress, $queryFlags=0) | |
Retrieve a blob, given an address. More... | |
getCacheExpiry () | |
getCompressBlobs () | |
getLegacyEncoding () | |
getLegacyEncodingConversionLang () | |
getTextIdFromAddress ( $address) | |
Returns an ID corresponding to the old_id field in the text table, corresponding to the given $address. More... | |
getUseExternalStore () | |
isReadOnly () | |
Check if the blob metadata or backing blob data store is read-only. More... | |
setCacheExpiry ( $cacheExpiry) | |
setCompressBlobs ( $compressBlobs) | |
setLegacyEncoding ( $legacyEncoding, Language $language) | |
setUseExternalStore ( $useExternalStore) | |
storeBlob ( $data, $hints=[]) | |
Stores an arbitrary blob of data and returns an address that can be used with getBlob() to retrieve the same blob of data,. More... | |
Static Public Member Functions | |
static | makeAddressFromTextId ( $id) |
Returns an address referring to content stored in the text table row with the given ID. More... | |
Public Attributes | |
const | TEXT_CACHE_GROUP = 'revisiontext:10' |
Public Attributes inherited from IDBAccessObject | |
const | READ_LOCKING = self::READ_LATEST | 2 |
Constants for object loading bitfield flags (higher => higher QoS) More... | |
const | READ_NONE = -1 |
Public Attributes inherited from MediaWiki\Storage\BlobStore | |
const | DESIGNATION_HINT = 'designation' |
Hint key for use with storeBlob, indicating the general role the block takes in the application. More... | |
const | FORMAT_HINT = 'cont_format' |
Hint key for use with storeBlob, indicating the serialization format used to create the blob, as a MIME type. More... | |
const | MODEL_HINT = 'cont_model' |
Hint key for use with storeBlob, indicating the model of the content encoded in the given blob. More... | |
const | PAGE_HINT = 'page_id' |
Hint key for use with storeBlob, indicating the page the blob is associated with. More... | |
const | PARENT_HINT = 'rev_parent_id' |
Hint key for use with storeBlob, indicating the parent revision of the revision the blob is associated with. More... | |
const | REVISION_HINT = 'rev_id' |
Hint key for use with storeBlob, indicating the revision the blob is associated with. More... | |
const | ROLE_HINT = 'role_name' |
Hint key for use with storeBlob, indicating the slot the blob is associated with. More... | |
const | SHA1_HINT = 'cont_sha1' |
Hint key for use with storeBlob, providing the SHA1 hash of the blob as passed to the method. More... | |
Private Member Functions | |
fetchBlob ( $blobAddress, $queryFlags) | |
MCR migration note: this corresponds to Revision::fetchText. More... | |
getCacheKey ( $blobAddress) | |
Get a cache key for a given Blob address. More... | |
getCacheTTL () | |
Get the text cache TTL. More... | |
getDBConnection ( $index) | |
getDBLoadBalancer () | |
Static Private Member Functions | |
static | splitBlobAddress ( $address) |
Splits a blob address into three parts: the schema, the ID, and parameters/flags. More... | |
Private Attributes | |
WANObjectCache | $cache |
int | $cacheExpiry = 604800 |
bool | $compressBlobs = false |
LoadBalancer | $dbLoadBalancer |
bool string | $legacyEncoding = false |
Language null | $legacyEncodingConversionLang = null |
boolean | $useExternalStore = false |
bool string | $wikiId |
Wiki ID. More... | |
Service for storing and loading Content objects.
Definition at line 50 of file SqlBlobStore.php.
MediaWiki\Storage\SqlBlobStore::__construct | ( | LoadBalancer | $dbLoadBalancer, |
WANObjectCache | $cache, | ||
$wikiId = false |
|||
) |
LoadBalancer | $dbLoadBalancer | A load balancer for acquiring database connections |
WANObjectCache | $cache | A cache manager for caching blobs. This can be the local wiki's default instance even if $wikiId refers to a different wiki, since makeGlobalKey() is used to constructed a key that allows cached blobs from the same database to be re-used between wikis. For example, enwiki and frwiki will use the same cache keys for blobs from the wikidatawiki database, regardless of the cache's default key space. |
bool | string | $wikiId | The ID of the target wiki database. Use false for the local wiki. |
Definition at line 105 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$cache, MediaWiki\Storage\SqlBlobStore\$dbLoadBalancer, MediaWiki\Storage\SqlBlobStore\$wikiId, and cache.
MediaWiki\Storage\SqlBlobStore::compressData | ( | & | $blob | ) |
If $wgCompressRevisions is enabled, we will compress data.
The input string is modified in place. Return value is the flags field: contains 'gzip' if the data is compressed, and 'utf-8' if we're saving in UTF-8 mode.
MCR migration note: this replaces Revision::compressRevisionText
mixed | &$blob | Reference to a text |
Definition at line 452 of file SqlBlobStore.php.
References $blob, wfDebug(), and wfLogWarning().
Referenced by MediaWiki\Storage\SqlBlobStore\storeBlob().
MediaWiki\Storage\SqlBlobStore::decompressData | ( | $blob, | |
array | $blobFlags | ||
) |
Re-converts revision text according to its flags.
MCR migration note: this replaces Revision::decompressRevisionText
string | $blob | Blob in compressed/encoded form. |
array | $blobFlags | Compression flags, such as 'gzip'. Note that not including 'utf-8' in $blobFlags will cause the data to be decoded according to the legacy encoding specified via setLegacyEncoding. |
Definition at line 492 of file SqlBlobStore.php.
References $blob, unserialize(), and wfWarn().
Referenced by MediaWiki\Storage\SqlBlobStore\expandBlob().
MediaWiki\Storage\SqlBlobStore::expandBlob | ( | $raw, | |
$flags, | |||
$cacheKey = null |
|||
) |
Expand a raw data blob according to the flags given.
MCR migration note: this replaces Revision::getRevisionText
string | $raw | The raw blob data, to be processed according to $flags. May be the blob itself, or the blob compressed, or just the address of the actual blob, depending on $flags. |
string | string[] | $flags | Blob flags, such as 'external' or 'gzip'. Note that not including 'utf-8' in $flags will cause the data to be decoded according to the legacy encoding specified via setLegacyEncoding. |
string | null | $cacheKey | A blob address for use in the cache key. If not given, caching is disabled. |
Definition at line 401 of file SqlBlobStore.php.
References $blob, cache, captcha-old\count, MediaWiki\Storage\SqlBlobStore\decompressData(), false, ExternalStore\fetchFromURL(), MediaWiki\Storage\SqlBlobStore\getCacheKey(), MediaWiki\Storage\SqlBlobStore\getCacheTTL(), MediaWiki\Storage\SqlBlobStore\TEXT_CACHE_GROUP, IExpiringStore\TTL_PROC_LONG, and use.
Referenced by MediaWiki\Storage\SqlBlobStore\fetchBlob().
|
private |
MCR migration note: this corresponds to Revision::fetchText.
string | $blobAddress | |
int | $queryFlags |
BlobAccessException |
Definition at line 302 of file SqlBlobStore.php.
References $blob, $options, MediaWiki\Storage\SqlBlobStore\expandBlob(), MediaWiki\Storage\SqlBlobStore\getDBConnection(), DBAccessObjectUtils\getDBOptions(), DBAccessObjectUtils\hasFlags(), list, MediaWiki\Storage\SqlBlobStore\splitBlobAddress(), wfLogWarning(), and wfWarn().
Referenced by MediaWiki\Storage\SqlBlobStore\getBlob().
MediaWiki\Storage\SqlBlobStore::getBlob | ( | $blobAddress, | |
$queryFlags = 0 |
|||
) |
Retrieve a blob, given an address.
Currently hardcoded to the 'text' table storage engine.
MCR migration note: this replaces Revision::loadText
string | $blobAddress | |
int | $queryFlags |
BlobAccessException |
Implements MediaWiki\Storage\BlobStore.
Definition at line 270 of file SqlBlobStore.php.
References $blob, cache, MediaWiki\Storage\SqlBlobStore\fetchBlob(), MediaWiki\Storage\SqlBlobStore\getCacheKey(), Wikimedia\Rdbms\Database\getCacheSetOptions(), MediaWiki\Storage\SqlBlobStore\getCacheTTL(), MediaWiki\Storage\SqlBlobStore\getDBConnection(), DBAccessObjectUtils\getDBOptions(), list, MediaWiki\Storage\SqlBlobStore\TEXT_CACHE_GROUP, IExpiringStore\TTL_PROC_LONG, and use.
MediaWiki\Storage\SqlBlobStore::getCacheExpiry | ( | ) |
Definition at line 118 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$cacheExpiry.
|
private |
Get a cache key for a given Blob address.
The cache key is constructed in a way that allows cached blobs from the same database to be re-used between wikis. For example, enwiki and frwiki will use the same cache keys for blobs from the wikidatawiki database.
string | $blobAddress |
Definition at line 373 of file SqlBlobStore.php.
References cache.
Referenced by MediaWiki\Storage\SqlBlobStore\expandBlob(), and MediaWiki\Storage\SqlBlobStore\getBlob().
|
private |
Get the text cache TTL.
MCR migration note: this replaces Revision::getCacheTTL
Definition at line 544 of file SqlBlobStore.php.
References IExpiringStore\ATTR_EMULATION, cache, IExpiringStore\QOS_EMULATION_SQL, and WANObjectCache\TTL_UNCACHEABLE.
Referenced by MediaWiki\Storage\SqlBlobStore\expandBlob(), and MediaWiki\Storage\SqlBlobStore\getBlob().
MediaWiki\Storage\SqlBlobStore::getCompressBlobs | ( | ) |
Definition at line 134 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$compressBlobs.
|
private |
int | $index | A database index, like DB_MASTER or DB_REPLICA |
Definition at line 201 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\getDBLoadBalancer().
Referenced by MediaWiki\Storage\SqlBlobStore\fetchBlob(), MediaWiki\Storage\SqlBlobStore\getBlob(), and MediaWiki\Storage\SqlBlobStore\storeBlob().
|
private |
Definition at line 192 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$dbLoadBalancer.
Referenced by MediaWiki\Storage\SqlBlobStore\getDBConnection(), and MediaWiki\Storage\SqlBlobStore\isReadOnly().
MediaWiki\Storage\SqlBlobStore::getLegacyEncoding | ( | ) |
Definition at line 149 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$legacyEncoding.
MediaWiki\Storage\SqlBlobStore::getLegacyEncodingConversionLang | ( | ) |
Definition at line 157 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$legacyEncodingConversionLang.
MediaWiki\Storage\SqlBlobStore::getTextIdFromAddress | ( | $address | ) |
Returns an ID corresponding to the old_id field in the text table, corresponding to the given $address.
Currently, $address must start with 'tt:' followed by a decimal integer representing the old_id; if $address does not start with 'tt:', null is returned. However, the implementation may change to insert rows into the text table on the fly. This implies that this method cannot be static.
string | $address |
Definition at line 577 of file SqlBlobStore.php.
References list, and MediaWiki\Storage\SqlBlobStore\splitBlobAddress().
MediaWiki\Storage\SqlBlobStore::getUseExternalStore | ( | ) |
Definition at line 176 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$useExternalStore.
MediaWiki\Storage\SqlBlobStore::isReadOnly | ( | ) |
Check if the blob metadata or backing blob data store is read-only.
Implements MediaWiki\Storage\BlobStore.
Definition at line 629 of file SqlBlobStore.php.
References ExternalStore\defaultStoresAreReadOnly(), and MediaWiki\Storage\SqlBlobStore\getDBLoadBalancer().
|
static |
Returns an address referring to content stored in the text table row with the given ID.
The address schema for blobs stored in the text table is "tt:" followed by an integer that corresponds to a value of the old_id field.
int | $id |
Definition at line 605 of file SqlBlobStore.php.
Referenced by Revision\RevisionStore\emulateMainSlot_1_29(), MediaWiki\Storage\SqlBlobStore\storeBlob(), MediaWiki\Tests\Storage\SqlBlobStoreTest\testMakeAddressFromTextId(), and Revision\RevisionStore\updateRevisionTextId().
MediaWiki\Storage\SqlBlobStore::setCacheExpiry | ( | $cacheExpiry | ) |
int | $cacheExpiry | time for which blobs can be cached, in seconds |
Definition at line 125 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$cacheExpiry.
MediaWiki\Storage\SqlBlobStore::setCompressBlobs | ( | $compressBlobs | ) |
bool | $compressBlobs | whether blobs should be compressed for storage |
Definition at line 141 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$compressBlobs.
Referenced by MediaWiki\Tests\Storage\SqlBlobStoreTest\getBlobStore().
MediaWiki\Storage\SqlBlobStore::setLegacyEncoding | ( | $legacyEncoding, | |
Language | $language | ||
) |
string | $legacyEncoding | The legacy encoding to assume for blobs that are not marked as utf8. |
Language | $language | The locale to use when decoding from a legacy encoding. |
Definition at line 166 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$legacyEncoding.
MediaWiki\Storage\SqlBlobStore::setUseExternalStore | ( | $useExternalStore | ) |
bool | $useExternalStore | Whether to use the ExternalStore mechanism for storing blobs. |
Definition at line 183 of file SqlBlobStore.php.
References MediaWiki\Storage\SqlBlobStore\$useExternalStore.
|
staticprivate |
Splits a blob address into three parts: the schema, the ID, and parameters/flags.
string | $address |
InvalidArgumentException |
Definition at line 617 of file SqlBlobStore.php.
References wfCgiToArray().
Referenced by MediaWiki\Storage\SqlBlobStore\fetchBlob(), and MediaWiki\Storage\SqlBlobStore\getTextIdFromAddress().
MediaWiki\Storage\SqlBlobStore::storeBlob | ( | $data, | |
$hints = [] |
|||
) |
Stores an arbitrary blob of data and returns an address that can be used with getBlob() to retrieve the same blob of data,.
string | $data | |
array | $hints | An array of hints. |
BlobAccessException |
Implements MediaWiki\Storage\BlobStore.
Definition at line 216 of file SqlBlobStore.php.
References $e, MediaWiki\Storage\SqlBlobStore\compressData(), DB_MASTER, MediaWiki\Storage\SqlBlobStore\getDBConnection(), ExternalStore\insertToDefault(), and MediaWiki\Storage\SqlBlobStore\makeAddressFromTextId().
|
private |
Definition at line 63 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\__construct().
|
private |
Definition at line 73 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\getCacheExpiry(), and MediaWiki\Storage\SqlBlobStore\setCacheExpiry().
|
private |
Definition at line 78 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\getCompressBlobs(), and MediaWiki\Storage\SqlBlobStore\setCompressBlobs().
|
private |
Definition at line 58 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\__construct(), and MediaWiki\Storage\SqlBlobStore\getDBLoadBalancer().
Definition at line 83 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\getLegacyEncoding(), and MediaWiki\Storage\SqlBlobStore\setLegacyEncoding().
|
private |
Definition at line 88 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\getLegacyEncodingConversionLang().
Definition at line 93 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\getUseExternalStore(), and MediaWiki\Storage\SqlBlobStore\setUseExternalStore().
|
private |
Wiki ID.
Definition at line 68 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\__construct().
const MediaWiki\Storage\SqlBlobStore::TEXT_CACHE_GROUP = 'revisiontext:10' |
Definition at line 53 of file SqlBlobStore.php.
Referenced by MediaWiki\Storage\SqlBlobStore\expandBlob(), and MediaWiki\Storage\SqlBlobStore\getBlob().