diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2008-08-15 01:29:47 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2008-08-15 01:29:47 +0200 |
commit | 370e83bb0dfd0c70de268c93bf07ad5ee0897192 (patch) | |
tree | 491674f4c242e4d6ba0d04eafa305174c35a3391 /maintenance/populateCategory.inc | |
parent | f4debf0f12d0524d2b2427c55ea3f16b680fad97 (diff) |
Update auf 1.13.0
Diffstat (limited to 'maintenance/populateCategory.inc')
-rw-r--r-- | maintenance/populateCategory.inc | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/maintenance/populateCategory.inc b/maintenance/populateCategory.inc new file mode 100644 index 00000000..3d04a30b --- /dev/null +++ b/maintenance/populateCategory.inc @@ -0,0 +1,85 @@ +<?php +/** + * @file + * @ingroup Maintenance + * @author Simetrical + */ + +define( 'REPORTING_INTERVAL', 1000 ); + +function populateCategory( $begin, $maxlag, $throttle, $force ) { + $dbw = wfGetDB( DB_MASTER ); + + if( !$force ) { + $row = $dbw->selectRow( + 'updatelog', + '1', + array( 'ul_key' => 'populate category' ), + __FUNCTION__ + ); + if( $row ) { + echo "Category table already populated. Use php ". + "maintenance/populateCategory.php\n--force from the command line ". + "to override.\n"; + return true; + } + } + + $maxlag = intval( $maxlag ); + $throttle = intval( $throttle ); + $force = (bool)$force; + if( $begin !== '' ) { + $where = 'cl_to > '.$dbw->addQuotes( $begin ); + } else { + $where = null; + } + $i = 0; + + while( true ) { + # Find which category to update + $row = $dbw->selectRow( + 'categorylinks', + 'cl_to', + $where, + __FUNCTION__, + array( + 'ORDER BY' => 'cl_to' + ) + ); + if( !$row ) { + # Done, hopefully. + break; + } + $name = $row->cl_to; + $where = 'cl_to > '.$dbw->addQuotes( $name ); + + # Use the row to update the category count + $cat = Category::newFromName( $name ); + if( !is_object( $cat ) ) { + echo "The category named $name is not valid?!\n"; + } else { + $cat->refreshCounts(); + } + + ++$i; + if( !($i % REPORTING_INTERVAL) ) { + echo "$name\n"; + wfWaitForSlaves( $maxlag ); + } + usleep( $throttle*1000 ); + } + + if( $dbw->insert( + 'updatelog', + array( 'ul_key' => 'populate category' ), + __FUNCTION__, + 'IGNORE' + ) + ) { + echo "Category population complete.\n"; + return true; + } else { + echo "Could not insert category population row.\n"; + return false; + } +} |