addDescription( 'Purge old IP address data from the abuse_filter_log table' ); $this->setBatchSize( 200 ); $this->requireExtension( 'Abuse Filter' ); } /** * @inheritDoc */ public function execute() { $this->output( "Purging old data from abuse_filter_log...\n" ); $dbw = $this->getDB( DB_PRIMARY ); $cutoffUnix = (int)MWTimestamp::now( TS_UNIX ) - $this->getConfig()->get( 'AbuseFilterLogIPMaxAge' ); $count = 0; do { $ids = $dbw->selectFieldValues( 'abuse_filter_log', 'afl_id', [ 'afl_ip <> ' . $dbw->addQuotes( '' ), "afl_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) ) ], __METHOD__, [ 'LIMIT' => $this->getBatchSize() ] ); if ( $ids ) { $dbw->newUpdateQueryBuilder() ->update( 'abuse_filter_log' ) ->set( [ 'afl_ip' => '' ] ) ->where( [ 'afl_id' => $ids ] ) ->caller( __METHOD__ ) ->execute(); $count += $dbw->affectedRows(); $this->output( "$count\n" ); $this->waitForReplication(); } } while ( count( $ids ) >= $this->getBatchSize() ); $this->output( "$count rows.\n" ); $this->output( "Done.\n" ); } } $maintClass = PurgeOldLogIPData::class; require_once RUN_MAINTENANCE_IF_MAIN;