summaryrefslogtreecommitdiff
path: root/includes/HTMLCacheUpdate.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/HTMLCacheUpdate.php')
-rw-r--r--includes/HTMLCacheUpdate.php33
1 files changed, 17 insertions, 16 deletions
diff --git a/includes/HTMLCacheUpdate.php b/includes/HTMLCacheUpdate.php
index 050005dd..1f250214 100644
--- a/includes/HTMLCacheUpdate.php
+++ b/includes/HTMLCacheUpdate.php
@@ -5,27 +5,28 @@
* Small numbers of links will be done immediately, large numbers are pushed onto
* the job queue.
*
- * This class is designed to work efficiently with small numbers of links, and
+ * This class is designed to work efficiently with small numbers of links, and
* to work reasonably well with up to ~10^5 links. Above ~10^6 links, the memory
* and time requirements of loading all backlinked IDs in doUpdate() might become
* prohibitive. The requirements measured at Wikimedia are approximately:
- *
+ *
* memory: 48 bytes per row
* time: 16us per row for the query plus processing
*
* The reason this query is done is to support partitioning of the job
- * by backlinked ID. The memory issue could be allieviated by doing this query in
+ * by backlinked ID. The memory issue could be allieviated by doing this query in
* batches, but of course LIMIT with an offset is inefficient on the DB side.
*
- * The class is nevertheless a vast improvement on the previous method of using
+ * The class is nevertheless a vast improvement on the previous method of using
* Image::getLinksTo() and Title::touchArray(), which uses about 2KB of memory per
* link.
+ *
+ * @ingroup Cache
*/
class HTMLCacheUpdate
{
public $mTitle, $mTable, $mPrefix;
public $mRowsPerJob, $mRowsPerQuery;
- public $mResult;
function __construct( $titleTo, $table ) {
global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
@@ -41,7 +42,7 @@ class HTMLCacheUpdate
$cond = $this->getToCondition();
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( $this->mTable, $this->getFromField(), $cond, __METHOD__ );
- $this->mResult = $res;
+
if ( $dbr->numRows( $res ) != 0 ) {
if ( $dbr->numRows( $res ) > $this->mRowsPerJob ) {
$this->insertJobs( $res );
@@ -67,7 +68,7 @@ class HTMLCacheUpdate
break;
}
}
-
+
$params = array(
'table' => $this->mTable,
'start' => $start,
@@ -88,7 +89,7 @@ class HTMLCacheUpdate
'categorylinks' => 'cl',
'templatelinks' => 'tl',
'redirect' => 'rd',
-
+
# Not needed
# 'externallinks' => 'el',
# 'langlinks' => 'll'
@@ -102,7 +103,7 @@ class HTMLCacheUpdate
}
return $this->mPrefix;
}
-
+
function getFromField() {
return $this->getPrefix() . '_from';
}
@@ -113,7 +114,7 @@ class HTMLCacheUpdate
case 'pagelinks':
case 'templatelinks':
case 'redirect':
- return array(
+ return array(
"{$prefix}_namespace" => $this->mTitle->getNamespace(),
"{$prefix}_title" => $this->mTitle->getDBkey()
);
@@ -138,7 +139,7 @@ class HTMLCacheUpdate
$dbw = wfGetDB( DB_MASTER );
$timestamp = $dbw->timestamp();
$done = false;
-
+
while ( !$done ) {
# Get all IDs in this query into an array
$ids = array();
@@ -155,10 +156,10 @@ class HTMLCacheUpdate
if ( !count( $ids ) ) {
break;
}
-
+
# Update page_touched
- $dbw->update( 'page',
- array( 'page_touched' => $timestamp ),
+ $dbw->update( 'page',
+ array( 'page_touched' => $timestamp ),
array( 'page_id IN (' . $dbw->makeList( $ids ) . ')' ),
__METHOD__
);
@@ -185,6 +186,7 @@ class HTMLCacheUpdate
/**
* @todo document (e.g. one-sentence top-level class description).
+ * @ingroup JobQueue
*/
class HTMLCacheUpdateJob extends Job {
var $table, $start, $end;
@@ -216,9 +218,8 @@ class HTMLCacheUpdateJob extends Job {
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( $this->table, $fromField, $conds, __METHOD__ );
- $update->invalidateIDs( new ResultWrapper( $dbr, $res ) );
+ $update->invalidateIDs( $res );
return true;
}
}
-