summaryrefslogtreecommitdiff
path: root/maintenance/deleteImageMemcached.php
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/deleteImageMemcached.php')
-rw-r--r--maintenance/deleteImageMemcached.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/maintenance/deleteImageMemcached.php b/maintenance/deleteImageMemcached.php
new file mode 100644
index 00000000..4e17d21e
--- /dev/null
+++ b/maintenance/deleteImageMemcached.php
@@ -0,0 +1,60 @@
+<?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, $wgDBname;
+ $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", $wgDBname, "$i/$total", wfPercent( $i / $total * 100 ));
+ $md5 = md5( $row->img_name );
+ $wgMemc->delete( "$wgDBname: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();
+?>