MediaWiki  1.32.0
LinkCache Class Reference

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

Collaboration diagram for LinkCache:

Public Member Functions

 __construct (TitleFormatter $titleFormatter, WANObjectCache $cache)
 
 addBadLinkObj (LinkTarget $target)
 
 addGoodLinkObj ( $id, LinkTarget $target, $len=-1, $redir=null, $revision=0, $model=null, $lang=null)
 Add a link for the title to the link cache. More...
 
 addGoodLinkObjFromRow (LinkTarget $target, $row)
 Same as above with better interface. More...
 
 addLink ( $title)
 Add a title to the link cache, return the page_id or zero if non-existent. More...
 
 addLinkObj (LinkTarget $nt)
 Add a title to the link cache, return the page_id or zero if non-existent. More...
 
 clear ()
 Clears cache. More...
 
 clearBadLink ( $title)
 
 clearLink (LinkTarget $target)
 
 forUpdate ( $update=null)
 General accessor to get/set whether the master DB should be used. More...
 
 getGoodLinkFieldObj (LinkTarget $target, $field)
 Get a field of a title object from cache. More...
 
 getGoodLinkID ( $title)
 
 getMutableCacheKeys (WANObjectCache $cache, LinkTarget $t)
 
 invalidateTitle (LinkTarget $title)
 Purge the link cache for a title. More...
 
 isBadLink ( $title)
 

Static Public Member Functions

static getSelectFields ()
 Fields that LinkCache needs to select. More...
 
static singleton ()
 Get an instance of this class. More...
 

Public Attributes

const MAX_SIZE = 10000
 How many Titles to store. More...
 

Private Member Functions

 fetchPageRow (IDatabase $db, LinkTarget $nt)
 
 isCacheable (LinkTarget $title)
 

Private Attributes

MapCacheLRU $badLinks
 
MapCacheLRU $goodLinks
 
bool $mForUpdate = false
 
TitleFormatter $titleFormatter
 
WANObjectCache $wanCache
 

Detailed Description

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

Definition at line 34 of file LinkCache.php.

Constructor & Destructor Documentation

◆ __construct()

LinkCache::__construct ( TitleFormatter  $titleFormatter,
WANObjectCache  $cache 
)

Definition at line 54 of file LinkCache.php.

References $cache, and $titleFormatter.

Member Function Documentation

◆ addBadLinkObj()

LinkCache::addBadLinkObj ( LinkTarget  $target)
Parameters
LinkTarget$target

Definition at line 169 of file LinkCache.php.

References isBadLink().

Referenced by addLinkObj().

◆ addGoodLinkObj()

LinkCache::addGoodLinkObj (   $id,
LinkTarget  $target,
  $len = -1,
  $redir = null,
  $revision = 0,
  $model = null,
  $lang = null 
)

Add a link for the title to the link cache.

Parameters
int$idPage's ID
LinkTarget$target
int$lenText's length
int | null$redirWhether the page is a redirect
int$revisionLatest revision's ID
string | null$modelLatest revision's content model ID
string | null$langLanguage code of the page, if not the content language

Definition at line 133 of file LinkCache.php.

References $lang.

◆ addGoodLinkObjFromRow()

LinkCache::addGoodLinkObjFromRow ( LinkTarget  $target,
  $row 
)

Same as above with better interface.

Since
1.19
Parameters
LinkTarget$target
stdClass$rowObject which has the fields page_id, page_is_redirect, page_latest and page_content_model

Definition at line 154 of file LinkCache.php.

Referenced by addLinkObj().

◆ addLink()

LinkCache::addLink (   $title)

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

Deprecated:
since 1.27, unused
Parameters
string$titlePrefixed DB key
Returns
int Page ID or zero

Definition at line 199 of file LinkCache.php.

References $title, addLinkObj(), and Title\newFromDBkey().

◆ addLinkObj()

LinkCache::addLinkObj ( LinkTarget  $nt)

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

Parameters
LinkTarget$ntLinkTarget object to add
Returns
int Page ID or zero

Definition at line 233 of file LinkCache.php.

References $cache, $dbr, $wanCache, addBadLinkObj(), addGoodLinkObjFromRow(), array(), DB_MASTER, DB_REPLICA, fetchPageRow(), MediaWiki\Linker\LinkTarget\getDBkey(), getGoodLinkID(), MediaWiki\Linker\LinkTarget\getNamespace(), MediaWiki\Linker\LinkTarget\inNamespace(), isBadLink(), isCacheable(), MediaWiki\Linker\LinkTarget\isExternal(), NS_SPECIAL, use, wfGetDB(), and wfTimestamp().

Referenced by addLink().

◆ clear()

LinkCache::clear ( )

Clears cache.

Definition at line 334 of file LinkCache.php.

◆ clearBadLink()

LinkCache::clearBadLink (   $title)
Parameters
string$titlePrefixed DB key

Definition at line 179 of file LinkCache.php.

References $title.

◆ clearLink()

LinkCache::clearLink ( LinkTarget  $target)
Parameters
LinkTarget$target

Definition at line 186 of file LinkCache.php.

◆ fetchPageRow()

◆ forUpdate()

LinkCache::forUpdate (   $update = null)

General accessor to get/set whether the master DB should be used.

This used to also set the FOR UPDATE option (locking the rows read in order to avoid link table inconsistency), which was later removed for performance on wikis with a high edit rate.

Parameters
bool | null$update
Returns
bool

Definition at line 81 of file LinkCache.php.

References wfSetVar().

◆ getGoodLinkFieldObj()

LinkCache::getGoodLinkFieldObj ( LinkTarget  $target,
  $field 
)

Get a field of a title object from cache.

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

Parameters
LinkTarget$target
string$field('length','redirect','revision','model')
Returns
string|int|null

Definition at line 104 of file LinkCache.php.

◆ getGoodLinkID()

LinkCache::getGoodLinkID (   $title)
Parameters
string$titlePrefixed DB key
Returns
int Page ID or zero

Definition at line 89 of file LinkCache.php.

References $title.

Referenced by addLinkObj().

◆ getMutableCacheKeys()

LinkCache::getMutableCacheKeys ( WANObjectCache  $cache,
LinkTarget  $t 
)
Parameters
WANObjectCache$cache
LinkTarget$t
Returns
string[]
Since
1.28

Definition at line 290 of file LinkCache.php.

References $cache, $t, and isCacheable().

◆ getSelectFields()

static LinkCache::getSelectFields ( )
static

◆ invalidateTitle()

LinkCache::invalidateTitle ( LinkTarget  $title)

Purge the link cache for a title.

Parameters
LinkTarget$title
Since
1.28

Definition at line 322 of file LinkCache.php.

References $cache, $title, $wanCache, and isCacheable().

◆ isBadLink()

LinkCache::isBadLink (   $title)
Parameters
string$titlePrefixed DB key
Returns
bool

Definition at line 117 of file LinkCache.php.

References $title.

Referenced by addBadLinkObj(), and addLinkObj().

◆ isCacheable()

LinkCache::isCacheable ( LinkTarget  $title)
private

Definition at line 298 of file LinkCache.php.

References $title, NS_FILE, and NS_TEMPLATE.

Referenced by addLinkObj(), fetchPageRow(), getMutableCacheKeys(), and invalidateTitle().

◆ singleton()

static LinkCache::singleton ( )
static

Get an instance of this class.

Returns
LinkCache
Deprecated:
since 1.28, use MediaWikiServices instead

Definition at line 67 of file LinkCache.php.

Referenced by ExtParserFunctions\ifexistCommon().

Member Data Documentation

◆ $badLinks

MapCacheLRU LinkCache::$badLinks
private

Definition at line 38 of file LinkCache.php.

◆ $goodLinks

MapCacheLRU LinkCache::$goodLinks
private

Definition at line 36 of file LinkCache.php.

◆ $mForUpdate

bool LinkCache::$mForUpdate = false
private

Definition at line 43 of file LinkCache.php.

◆ $titleFormatter

TitleFormatter LinkCache::$titleFormatter
private

Definition at line 46 of file LinkCache.php.

Referenced by __construct().

◆ $wanCache

WANObjectCache LinkCache::$wanCache
private

Definition at line 40 of file LinkCache.php.

Referenced by addLinkObj(), and invalidateTitle().

◆ MAX_SIZE

const LinkCache::MAX_SIZE = 10000

How many Titles to store.

There are two caches, so the amount actually stored in memory can be up to twice this.

Definition at line 52 of file LinkCache.php.


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