Revert r52336 "Merge maintenance-work branch:"
[lhc/web/wiklou.git] / maintenance / deleteImageMemcached.php
1 <?php
2 /**
3 * This script delete image information from memcached.
4 *
5 * Usage example:
6 * php deleteImageMemcached.php --until "2005-09-05 00:00:00" --sleep 0 --report 10
7 *
8 * @file
9 * @ingroup Maintenance
10 */
11
12 $optionsWithArgs = array( 'until', 'sleep', 'report' );
13
14 require_once 'commandLine.inc';
15
16 /**
17 * @ingroup Maintenance
18 */
19 class DeleteImageCache {
20 var $until, $sleep, $report;
21
22 function DeleteImageCache( $until, $sleep, $report ) {
23 $this->until = $until;
24 $this->sleep = $sleep;
25 $this->report = $report;
26 }
27
28 function main() {
29 global $wgMemc;
30 $fname = 'DeleteImageCache::main';
31
32 ini_set( 'display_errors', false );
33
34 $dbr = wfGetDB( DB_SLAVE );
35
36 $res = $dbr->select( 'image',
37 array( 'img_name' ),
38 array( "img_timestamp < {$this->until}" ),
39 $fname
40 );
41
42 $i = 0;
43 $total = $this->getImageCount();
44
45 while ( $row = $dbr->fetchObject( $res ) ) {
46 if ($i % $this->report == 0)
47 printf("%s: %13s done (%s)\n", wfWikiID(), "$i/$total", wfPercent( $i / $total * 100 ));
48 $md5 = md5( $row->img_name );
49 $wgMemc->delete( wfMemcKey( 'Image', $md5 ) );
50
51 if ($this->sleep != 0)
52 usleep( $this->sleep );
53
54 ++$i;
55 }
56 }
57
58 function getImageCount() {
59 $fname = 'DeleteImageCache::getImageCount';
60
61 $dbr = wfGetDB( DB_SLAVE );
62 return $dbr->selectField( 'image', 'COUNT(*)', array(), $fname );
63 }
64 }
65
66 $until = preg_replace( "/[^\d]/", '', $options['until'] );
67 $sleep = (int)$options['sleep'] * 1000; // milliseconds
68 $report = (int)$options['report'];
69
70 $dic = new DeleteImageCache( $until, $sleep, $report );
71 $dic->main();
72