2 // php deleteImageMemcached.php --until "2003-09-04 04:40:00" --wait 500
3 $optionsWithArgs = array( 'until', 'sleep', 'report' );
5 require_once 'commandLine.inc';
7 class DeleteImageCache
{
8 var $until, $sleep, $report;
10 function DeleteImageCache( $until, $sleep, $report ) {
11 $this->until
= $until;
12 $this->sleep
= $sleep;
13 $this->report
= $report;
17 global $wgMemc, $wgDBname;
18 $fname = 'DeleteImageCache::main';
20 $dbr =& wfGetDB( DB_SLAVE
);
22 $res = $dbr->select( 'image',
24 array( "img_timestamp < {$this->until}" ),
29 $total = $this->getImageCount();
31 while ( $row = $dbr->fetchObject( $res ) ) {
32 if ($i %
$this->report
== 0)
33 printf("%s: %13s done (%s)\n", $wgDBname, "$i/$total", wfPercent( $i / $total * 100 ));
34 $md5 = md5( $row->img_name
);
35 $wgMemc->delete( "$wgDBname:Image:$md5" );
37 if ($this->sleep
!= 0)
38 usleep( $this->sleep
);
44 function getImageCount() {
45 $fname = 'DeleteImageCache::getImageCount';
47 $dbr =& wfGetDB( DB_SLAVE
);
48 return $dbr->selectField( 'image', 'COUNT(*)', array(), $fname );
52 $until = preg_replace( "/[^\d]/", '', $options['until'] );
53 $sleep = (int)$options['sleep'] * 1000; // milliseconds
54 $report = (int)$options['report'];
56 $dic = new DeleteImageCache( $until, $sleep, $report );