MediaWiki master
MediaWiki\Cache\LinkCache Class Reference

Cache for article titles (prefixed DB keys) and ids linked from one source. More...

Inherits LoggerAwareInterface.

Collaboration diagram for MediaWiki\Cache\LinkCache:

Public Member Functions

 __construct (TitleFormatter $titleFormatter, WANObjectCache $cache, NamespaceInfo $nsInfo, ?ILoadBalancer $loadBalancer=null)
 
 addBadLinkObj ( $page, int $queryFlags=IDBAccessObject::READ_NORMAL)
 Add information about a missing page to the process cache.
 
 addGoodLinkObjFromRow ( $page, stdClass $row, int $queryFlags=IDBAccessObject::READ_NORMAL)
 Add information about an existing page to the process cache.
 
 addLinkObj ( $page, int $queryFlags=IDBAccessObject::READ_NORMAL)
 Add a title to the link cache, return the page_id or zero if non-existent.
 
 clear ()
 Clears cache.
 
 clearBadLink ( $page)
 Clear information about a page being missing from the process cache.
 
 clearLink ( $page)
 Clear information about a page from the process cache.
 
 getGoodLinkFieldObj ( $page, string $field)
 Get the field of a page known to the process cache.
 
 getGoodLinkID ( $page)
 Get the ID of a page known to the process cache.
 
 getGoodLinkRow (int $ns, string $dbkey, ?callable $fetchCallback=null, int $queryFlags=IDBAccessObject::READ_NORMAL)
 Returns the row for the page if the page exists (subject to race conditions).
 
 invalidateTitle ( $page)
 Purge the persistent link cache for a title.
 
 isBadLink ( $page)
 Check if a page is known to be missing based on the process cache.
 
 setLogger (LoggerInterface $logger)
 

Static Public Member Functions

static getSelectFields ()
 Fields that LinkCache needs to select.
 

Detailed Description

Cache for article titles (prefixed DB keys) and ids linked from one source.

Definition at line 52 of file LinkCache.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Cache\LinkCache::__construct ( TitleFormatter $titleFormatter,
WANObjectCache $cache,
NamespaceInfo $nsInfo,
?ILoadBalancer $loadBalancer = null )
Parameters
TitleFormatter$titleFormatter
WANObjectCache$cache
NamespaceInfo$nsInfo
ILoadBalancer | null$loadBalancerUse null when no database is set up, for example on installation

Definition at line 80 of file LinkCache.php.

Member Function Documentation

◆ addBadLinkObj()

MediaWiki\Cache\LinkCache::addBadLinkObj ( $page,
int $queryFlags = IDBAccessObject::READ_NORMAL )

Add information about a missing page to the process cache.

Callers must set the READ_LATEST flag if the row came from a DB_PRIMARY source. However, the use of such data is highly discouraged; most callers rely on seeing consistent DB_REPLICA data (e.g. REPEATABLE-READ point-in-time snapshots) and the accidental use of DB_PRIMARY data via LinkCache is prone to causing anomalies.

Parameters
LinkTarget | PageReference | array$pageThe page to set cached info for. Can be given as an object or an associative array containing the page_namespace and page_title fields. In MediaWiki 1.36 and earlier, only LinkTarget was accepted.
int$queryFlagsThe query flags used to retrieve the row, IDBAccessObject::READ_*

Definition at line 301 of file LinkCache.php.

References getCacheKey().

◆ addGoodLinkObjFromRow()

MediaWiki\Cache\LinkCache::addGoodLinkObjFromRow ( $page,
stdClass $row,
int $queryFlags = IDBAccessObject::READ_NORMAL )

Add information about an existing page to the process cache.

Callers must set the READ_LATEST flag if the row came from a DB_PRIMARY source. However, the use of such data is highly discouraged; most callers rely on seeing consistent DB_REPLICA data (e.g. REPEATABLE-READ point-in-time snapshots) and the accidental use of DB_PRIMARY data via LinkCache is prone to causing anomalies.

Parameters
LinkTarget | PageReference | array$pageThe page to set cached info for. Can be given as an object or an associative array containing the page_namespace and page_title fields. In MediaWiki 1.36 and earlier, only LinkTarget was accepted.
stdClass$rowObject which has all fields returned by getSelectFields().
int$queryFlagsThe query flags used to retrieve the row, IDBAccessObject::READ_*
Since
1.19

Definition at line 268 of file LinkCache.php.

References getCacheKey().

◆ addLinkObj()

MediaWiki\Cache\LinkCache::addLinkObj ( $page,
int $queryFlags = IDBAccessObject::READ_NORMAL )

Add a title to the link cache, return the page_id or zero if non-existent.

This causes the link to be looked up in the database if it is not yet cached.

Deprecated
since 1.37, use PageStore::getPageForLink() instead.
Parameters
LinkTarget | PageReference | array$pageThe page to load. Can be given as an object or an associative array containing the page_namespace and page_title fields. In MediaWiki 1.36 and earlier, only LinkTarget was accepted.
int$queryFlagsIDBAccessObject::READ_XXX
Returns
int Page ID or zero

Definition at line 384 of file LinkCache.php.

References MediaWiki\Cache\LinkCache\getGoodLinkRow().

◆ clear()

MediaWiki\Cache\LinkCache::clear ( )

Clears cache.

Definition at line 588 of file LinkCache.php.

◆ clearBadLink()

MediaWiki\Cache\LinkCache::clearBadLink ( $page)

Clear information about a page being missing from the process cache.

Parameters
LinkTarget | PageReference | array | string$pageThe page to clear cached info for, as an object, an array containing the page_namespace and page_title fields, or a prefixed DB key. In MediaWiki 1.36 and earlier, only a string was accepted. In MediaWiki 1.36 and earlier, only a string was accepted.

Definition at line 318 of file LinkCache.php.

References getCacheKey().

◆ clearLink()

MediaWiki\Cache\LinkCache::clearLink ( $page)

Clear information about a page from the process cache.

Parameters
LinkTarget | PageReference | array$pageThe page to clear cached info for. Can be given as an object or an associative array containing the page_namespace and page_title fields. In MediaWiki 1.36 and earlier, only LinkTarget was accepted.

Definition at line 338 of file LinkCache.php.

References getCacheKey().

◆ getGoodLinkFieldObj()

MediaWiki\Cache\LinkCache::getGoodLinkFieldObj ( $page,
string $field )

Get the field of a page known to the process cache.

If this link is not a cached good title, it will return NULL.

Parameters
LinkTarget | PageReference | array$pageThe page to get cached info for. Can be given as an object or an associative array containing the page_namespace and page_title fields. In MediaWiki 1.36 and earlier, only LinkTarget was accepted.
string$field( 'id', 'length', 'redirect', 'revision', 'model', 'lang' )
Returns
string|int|null The field value, or null if the page was not cached or does not exist or is not a proper page (e.g. a special page or interwiki link).

Definition at line 194 of file LinkCache.php.

References getCacheKey().

◆ getGoodLinkID()

MediaWiki\Cache\LinkCache::getGoodLinkID ( $page)

Get the ID of a page known to the process cache.

Parameters
LinkTarget | PageReference | array | string$pageThe page to get the ID for, as an object, an array containing the page_namespace and page_title fields, or a prefixed DB key. In MediaWiki 1.36 and earlier, only a string was accepted.
Returns
int Page ID, or zero if the page was not cached or does not exist or is not a proper page (e.g. a special page or an interwiki link).

Definition at line 166 of file LinkCache.php.

References getCacheKey().

◆ getGoodLinkRow()

MediaWiki\Cache\LinkCache::getGoodLinkRow ( int $ns,
string $dbkey,
?callable $fetchCallback = null,
int $queryFlags = IDBAccessObject::READ_NORMAL )

Returns the row for the page if the page exists (subject to race conditions).

The row will be returned from local cache or WAN cache if possible, or it will be looked up using the callback provided.

Parameters
int$ns
string$dbkey
callable | null$fetchCallbackA callback that will retrieve the link row with the signature ( IReadableDatabase $db, int $ns, string $dbkey, array $queryOptions ): ?stdObj.
int$queryFlagsIDBAccessObject::READ_XXX
Returns
stdClass|null
Access: internal
for use by PageStore. Other code should use a PageLookup instead.

Definition at line 479 of file LinkCache.php.

Referenced by MediaWiki\Cache\LinkCache\addLinkObj().

◆ getSelectFields()

static MediaWiki\Cache\LinkCache::getSelectFields ( )
static

Fields that LinkCache needs to select.

Since
1.28
Returns
array

Definition at line 351 of file LinkCache.php.

References MediaWiki\MediaWikiServices\getInstance(), MediaWiki\MainConfigNames\PageLanguageUseDB, and MediaWiki\Page\PageStoreRecord\REQUIRED_FIELDS.

Referenced by MediaWiki\Cache\LinkBatch\doQuery().

◆ invalidateTitle()

MediaWiki\Cache\LinkCache::invalidateTitle ( $page)

Purge the persistent link cache for a title.

Parameters
LinkTarget | PageReference$pageIn MediaWiki 1.36 and earlier, only LinkTarget was accepted.
Since
1.28

Definition at line 576 of file LinkCache.php.

◆ isBadLink()

MediaWiki\Cache\LinkCache::isBadLink ( $page)

Check if a page is known to be missing based on the process cache.

Parameters
LinkTarget | PageReference | array | string$pageThe page to get cached info for, as an object, an array containing the page_namespace and page_title fields, or a prefixed DB key. In MediaWiki 1.36 and earlier, only a string was accepted. In MediaWiki 1.36 and earlier, only a string was accepted.
Returns
bool Whether the page is known to be missing based on the process cache

Definition at line 241 of file LinkCache.php.

References getCacheKey().

◆ setLogger()

MediaWiki\Cache\LinkCache::setLogger ( LoggerInterface $logger)
Parameters
LoggerInterface$logger

Definition at line 97 of file LinkCache.php.


The documentation for this class was generated from the following file: