Make checkUsernames.php use batches
authorReedy <reedy@wikimedia.org>
Fri, 17 May 2013 00:32:13 +0000 (01:32 +0100)
committerReedy <reedy@wikimedia.org>
Mon, 20 May 2013 18:29:49 +0000 (19:29 +0100)
Bug: 3507
Change-Id: Idb4b84b853f4f86e90a470e937af9017cee15e44

maintenance/checkUsernames.php

index c6ef8da..8db3936 100644 (file)
@@ -21,7 +21,6 @@
  * @ingroup Maintenance
  */
 
-
 require_once( __DIR__ . '/Maintenance.php' );
 
 /**
@@ -37,23 +36,32 @@ class CheckUsernames extends Maintenance {
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Verify that database usernames are actually valid";
+               $this->setBatchSize( 1000 );
        }
 
        function execute() {
                $dbr = wfGetDB( DB_SLAVE );
 
-               $res = $dbr->select( 'user',
-                       array( 'user_id', 'user_name' ),
-                       null,
-                       __METHOD__
-               );
+               $maxUserId = 0;
+               do {
+                       $res = $dbr->select( 'user',
+                               array( 'user_id', 'user_name' ),
+                               array( 'user_id > ' . $maxUserId ),
+                               __METHOD__,
+                               array(
+                                       'ORDER BY' => 'user_id',
+                                       'LIMIT' => $this->mBatchSize,
+                               )
+                       );
 
-               foreach ( $res as $row ) {
-                       if ( ! User::isValidUserName( $row->user_name ) ) {
-                               $this->error( sprintf( "%s: %6d: '%s'\n", wfWikiID(), $row->user_id, $row->user_name ) );
-                               wfDebugLog( 'checkUsernames', $row->user_name );
+                       foreach ( $res as $row ) {
+                               if ( ! User::isValidUserName( $row->user_name ) ) {
+                                       $this->error( sprintf( "%s: %6d: '%s'\n", wfWikiID(), $row->user_id, $row->user_name ) );
+                                       wfDebugLog( 'checkUsernames', $row->user_name );
+                               }
                        }
-               }
+                       $maxUserId = $row->user_id;
+               } while( $res->numRows() );
        }
 }