mDescription = "Run a query repeatedly until it affects 0 rows, and wait for slaves in between.\n" . "NOTE: You need to set a LIMIT clause yourself."; $this->addOption( 'wait', "Wait for replication lag to go down to this value. Default: 5", false, true ); } public function execute() { if ( !$this->hasArg() ) $this->error( "No query specified. Specify the query as a command line parameter.", true ); $query = $this->getArg(); $wait = $this->getOption( 'wait', 5 ); $n = 1; $dbw = wfGetDb( DB_MASTER ); do { $this->output( "Batch $n: " ); $n++; $dbw->query( $query ); $affected = $dbw->affectedRows(); $this->output( "$affected rows\n" ); wfWaitForSlaves( $wait ); } while ( $affected > 0 ); } public function getDbType() { return Maintenance::DB_ADMIN; } } $maintClass = "BatchedQueryRunner"; require_once( DO_MAINTENANCE );