wiki.techinc.nl/maintenance/deleteImageMemcached.php
Tim Starling e174a4ddfb Abolished $wgDBname as a unique wiki identifier, it doesn't work with the new-fangled feature we call "table prefixes". Instead use wfWikiID() for an identifier containing the DB name and the prefix if there is one, and wfMemcKey() for cache key construction.
Caches for wikis with table prefixes will be lost on upgrade, caches for wikis without table prefixes will be preserved. Custom cache keys in extensions can be migrated at leisure. Extensions which write to core cache keys should be migrated ASAP, as I have done with Special:Makesysop.
2006-10-04 09:06:18 +00:00

60 lines
1.4 KiB
PHP

<?php
// php deleteImageMemcached.php --until "2005-09-05 00:00:00" --sleep 0 --report 10
$optionsWithArgs = array( 'until', 'sleep', 'report' );
require_once 'commandLine.inc';
class DeleteImageCache {
var $until, $sleep, $report;
function DeleteImageCache( $until, $sleep, $report ) {
$this->until = $until;
$this->sleep = $sleep;
$this->report = $report;
}
function main() {
global $wgMemc;
$fname = 'DeleteImageCache::main';
ini_set( 'display_errors', false );
$dbr =& wfGetDB( DB_SLAVE );
$res = $dbr->select( 'image',
array( 'img_name' ),
array( "img_timestamp < {$this->until}" ),
$fname
);
$i = 0;
$total = $this->getImageCount();
while ( $row = $dbr->fetchObject( $res ) ) {
if ($i % $this->report == 0)
printf("%s: %13s done (%s)\n", wfWikiID(), "$i/$total", wfPercent( $i / $total * 100 ));
$md5 = md5( $row->img_name );
$wgMemc->delete( wfMemcKey( 'Image', $md5 ) );
if ($this->sleep != 0)
usleep( $this->sleep );
++$i;
}
}
function getImageCount() {
$fname = 'DeleteImageCache::getImageCount';
$dbr =& wfGetDB( DB_SLAVE );
return $dbr->selectField( 'image', 'COUNT(*)', array(), $fname );
}
}
$until = preg_replace( "/[^\d]/", '', $options['until'] );
$sleep = (int)$options['sleep'] * 1000; // milliseconds
$report = (int)$options['report'];
$dic = new DeleteImageCache( $until, $sleep, $report );
$dic->main();
?>