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