MediaWiki REL1_33
BacklinkCache Class Reference

Class for fetching backlink lists, approximate backlink counts and partitions. More...

Collaboration diagram for BacklinkCache:

Public Member Functions

 __construct (Title $title)
 Create a new BacklinkCache.
 
 __sleep ()
 Serialization handler, diasallows to serialize the database to prevent failures after this class is deserialized from cache with dead DB connection.
 
 clear ()
 Clear locally stored data and database object.
 
 getCascadeProtectedLinks ()
 Get a Title iterator for cascade-protected template/file use backlinks.
 
 getLinks ( $table, $startId=false, $endId=false, $max=INF)
 Get the backlinks for a given table.
 
 getNumLinks ( $table, $max=INF)
 Get the approximate number of backlinks.
 
 hasLinks ( $table)
 Check if there are any backlinks.
 
 partition ( $table, $batchSize)
 Partition the backlinks into batches.
 
 setDB ( $db)
 Set the Database object to use.
 

Static Public Member Functions

static get (Title $title)
 Create a new BacklinkCache or reuse any existing one.
 

Public Attributes

const CACHE_EXPIRY = 3600
 

Protected Member Functions

 getConditions ( $table)
 Get the SQL condition array for selecting backlinks, with a join on the page table.
 
 getDB ()
 Get the replica DB connection to the database When non existing, will initialize the connection.
 
 getPrefix ( $table)
 Get the field name prefix for a given table.
 
 partitionResult ( $res, $batchSize, $isComplete=true)
 Partition a DB result with backlinks in it into batches.
 
 queryLinks ( $table, $startId, $endId, $max, $select='all')
 Get the backlinks for a given table.
 

Protected Attributes

 $db
 Local copy of a database object.
 
ResultWrapper[] $fullResultCache = []
 Contains the whole links from a database result.
 
array[] $partitionCache = []
 Multi dimensions array representing batches.
 
 $title
 Local copy of a Title object.
 
WANObjectCache $wanCache
 

Static Protected Attributes

static BacklinkCache $instance
 

Private Member Functions

 makeCheckKey ()
 Returns check key for the backlinks cache for a particular title.
 

Detailed Description

Class for fetching backlink lists, approximate backlink counts and partitions.

This is a shared cache.

Instances of this class should typically be fetched with the method $title->getBacklinkCache().

Ideally you should only get your backlinks from here when you think there is some advantage in caching them. Otherwise it's just a waste of memory.

Introduced by r47317

Definition at line 46 of file BacklinkCache.php.

Constructor & Destructor Documentation

◆ __construct()

BacklinkCache::__construct ( Title  $title)

Create a new BacklinkCache.

Parameters
Title$title: Title object to create a backlink cache for

Definition at line 100 of file BacklinkCache.php.

References $title, and title.

Member Function Documentation

◆ __sleep()

BacklinkCache::__sleep ( )

Serialization handler, diasallows to serialize the database to prevent failures after this class is deserialized from cache with dead DB connection.

Returns
array

Definition at line 127 of file BacklinkCache.php.

◆ clear()

BacklinkCache::clear ( )

Clear locally stored data and database object.

Invalidate data in memcache.

Definition at line 134 of file BacklinkCache.php.

References makeCheckKey().

◆ get()

static BacklinkCache::get ( Title  $title)
static

Create a new BacklinkCache or reuse any existing one.

Currently, only one cache instance can exist; callers that need multiple backlink cache objects should keep them in scope.

Parameters
Title$titleTitle object to get a backlink cache for
Returns
BacklinkCache

Definition at line 113 of file BacklinkCache.php.

References $instance, $title, and title.

Referenced by Title\getBacklinkCache(), and WikiPage\onArticleDelete().

◆ getCascadeProtectedLinks()

BacklinkCache::getCascadeProtectedLinks ( )

Get a Title iterator for cascade-protected template/file use backlinks.

Returns
TitleArray
Since
1.25

Definition at line 522 of file BacklinkCache.php.

References $dbr, $res, as, getDB(), TitleArray\newFromResult(), NS_FILE, and title.

◆ getConditions()

BacklinkCache::getConditions (   $table)
protected

Get the SQL condition array for selecting backlinks, with a join on the page table.

Parameters
string$table
Exceptions
MWException
Returns
array|null

Definition at line 276 of file BacklinkCache.php.

References getDB(), getPrefix(), LIST_OR, and title.

Referenced by queryLinks().

◆ getDB()

BacklinkCache::getDB ( )
protected

Get the replica DB connection to the database When non existing, will initialize the connection.

Returns
IDatabase

Definition at line 155 of file BacklinkCache.php.

References $db, DB_REPLICA, and wfGetDB().

Referenced by getCascadeProtectedLinks(), getConditions(), and queryLinks().

◆ getLinks()

BacklinkCache::getLinks (   $table,
  $startId = false,
  $endId = false,
  $max = INF 
)

Get the backlinks for a given table.

Cached in process memory only.

Parameters
string$table
int | bool$startId
int | bool$endId
int$max
Returns
TitleArrayFromResult

Definition at line 171 of file BacklinkCache.php.

References TitleArray\newFromResult(), and queryLinks().

Referenced by getNumLinks().

◆ getNumLinks()

BacklinkCache::getNumLinks (   $table,
  $max = INF 
)

Get the approximate number of backlinks.

Parameters
string$table
int$maxOnly count up to this many backlinks
Returns
int

Definition at line 332 of file BacklinkCache.php.

References $wgUpdateRowsPerJob, getLinks(), makeCheckKey(), partition(), and title.

Referenced by hasLinks().

◆ getPrefix()

BacklinkCache::getPrefix (   $table)
protected

Get the field name prefix for a given table.

Parameters
string$table
Exceptions
MWException
Returns
null|string

Definition at line 247 of file BacklinkCache.php.

Referenced by getConditions(), and queryLinks().

◆ hasLinks()

BacklinkCache::hasLinks (   $table)

Check if there are any backlinks.

Parameters
string$table
Returns
bool

Definition at line 322 of file BacklinkCache.php.

References getNumLinks().

◆ makeCheckKey()

BacklinkCache::makeCheckKey ( )
private

Returns check key for the backlinks cache for a particular title.

Returns
string

Definition at line 572 of file BacklinkCache.php.

References title.

Referenced by clear(), getNumLinks(), and partition().

◆ partition()

BacklinkCache::partition (   $table,
  $batchSize 
)

Partition the backlinks into batches.

Returns an array giving the start and end of each range. The first batch has a start of false, and the last batch has an end of false.

Parameters
string$tableThe links table name
int$batchSize
Returns
array

Definition at line 392 of file BacklinkCache.php.

References $res, list, makeCheckKey(), partitionResult(), queryLinks(), title, and wfDebug().

Referenced by getNumLinks().

◆ partitionResult()

BacklinkCache::partitionResult (   $res,
  $batchSize,
  $isComplete = true 
)
protected

Partition a DB result with backlinks in it into batches.

Parameters
ResultWrapper$resDatabase result
int$batchSize
bool$isCompleteWhether $res includes all the backlinks
Exceptions
MWException
Returns
array

Definition at line 481 of file BacklinkCache.php.

References $res.

Referenced by partition().

◆ queryLinks()

BacklinkCache::queryLinks (   $table,
  $startId,
  $endId,
  $max,
  $select = 'all' 
)
protected

Get the backlinks for a given table.

Cached in process memory only.

Parameters
string$table
int | bool$startId
int | bool$endId
int$max
string$select'all' or 'ids'
Returns
ResultWrapper

Definition at line 184 of file BacklinkCache.php.

References $options, $res, getConditions(), getDB(), getPrefix(), and wfDebug().

Referenced by getLinks(), and partition().

◆ setDB()

BacklinkCache::setDB (   $db)

Set the Database object to use.

Parameters
IDatabase$db

Definition at line 146 of file BacklinkCache.php.

References $db.

Member Data Documentation

◆ $db

BacklinkCache::$db
protected

Local copy of a database object.

Accessor: BacklinkCache::getDB() Mutator : BacklinkCache::setDB() Cleared with BacklinkCache::clear()

Definition at line 86 of file BacklinkCache.php.

Referenced by getDB(), and setDB().

◆ $fullResultCache

ResultWrapper [] BacklinkCache::$fullResultCache = []
protected

Contains the whole links from a database result.

This is raw data that will be partitioned in $partitionCache

Initialized with BacklinkCache::getLinks() Cleared with BacklinkCache::clear()

Definition at line 72 of file BacklinkCache.php.

◆ $instance

BacklinkCache BacklinkCache::$instance
staticprotected

Definition at line 48 of file BacklinkCache.php.

Referenced by get().

◆ $partitionCache

array [] BacklinkCache::$partitionCache = []
protected

Multi dimensions array representing batches.

Keys are:

‍(string) links table name (int) batch size 'numRows' : Number of rows for this link table 'batches' : [ $start, $end ]

See also
BacklinkCache::partitionResult()

Cleared with BacklinkCache::clear()

Definition at line 62 of file BacklinkCache.php.

◆ $title

BacklinkCache::$title
protected

Local copy of a Title object.

Definition at line 91 of file BacklinkCache.php.

Referenced by __construct(), and get().

◆ $wanCache

WANObjectCache BacklinkCache::$wanCache
protected

Definition at line 77 of file BacklinkCache.php.

◆ CACHE_EXPIRY

const BacklinkCache::CACHE_EXPIRY = 3600

Definition at line 93 of file BacklinkCache.php.


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