X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FconvertLinks.php;h=26f81821da36f3668172a5bc0654008dbfb982bd;hb=9ef0f8ff0307bab339805b7ee3bae126716ff6db;hp=8cd029762ffcd435b63e465be9d20b6d77e9aaed;hpb=1a21a63d52b9ebf940cd35f041d675d39c9d474a;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/convertLinks.php b/maintenance/convertLinks.php index 8cd029762f..26f81821da 100644 --- a/maintenance/convertLinks.php +++ b/maintenance/convertLinks.php @@ -21,6 +21,8 @@ * @ingroup Maintenance */ +use MediaWiki\MediaWikiServices; + require_once __DIR__ . '/Maintenance.php'; /** @@ -75,8 +77,6 @@ class ConvertLinks extends Maintenance { return; } - global $wgContLang; - # counters etc $numBadLinks = $curRowsRead = 0; @@ -100,10 +100,10 @@ class ConvertLinks extends Maintenance { # not used yet; highest row number from links table to process # $finalRowOffset = 0; + $this->logPerformance = $this->hasOption( 'logperformance' ); + $perfLogFilename = $this->getArg( 1, "convLinksPerf.txt" ); $overwriteLinksTable = !$this->hasOption( 'keep-links-table' ); $noKeys = $this->hasOption( 'noKeys' ); - $this->logPerformance = $this->hasOption( 'logperformance' ); - $perfLogFilename = $this->getArg( 'perfLogFilename', "convLinksPerf.txt" ); # -------------------------------------------------------------------- @@ -117,6 +117,7 @@ class ConvertLinks extends Maintenance { } $res = $dbw->query( "SELECT l_from FROM $links LIMIT 1" ); + // @phan-suppress-next-line PhanUndeclaredMethod if ( $dbw->fieldType( $res, 0 ) == "int" ) { $this->output( "Schema already converted\n" ); @@ -126,7 +127,6 @@ class ConvertLinks extends Maintenance { $res = $dbw->query( "SELECT COUNT(*) AS count FROM $links" ); $row = $dbw->fetchObject( $res ); $numRows = $row->count; - $dbw->freeResult( $res ); if ( $numRows == 0 ) { $this->output( "Updating schema (no rows to convert)...\n" ); @@ -145,30 +145,34 @@ class ConvertLinks extends Maintenance { $this->output( "Loading IDs from $cur table...\n" ); $this->performanceLog( $fh, "Reading $numRows rows from cur table...\n" ); $this->performanceLog( $fh, "rows read vs seconds elapsed:\n" ); + $contentLang = MediaWikiServices::getInstance()->getContentLanguage(); - $dbw->bufferResults( false ); - $res = $dbw->query( "SELECT cur_namespace,cur_title,cur_id FROM $cur" ); $ids = []; - - foreach ( $res as $row ) { - $title = $row->cur_title; - if ( $row->cur_namespace ) { - $title = $wgContLang->getNsText( $row->cur_namespace ) . ":$title"; - } - $ids[$title] = $row->cur_id; - $curRowsRead++; - if ( $reportCurReadProgress ) { - if ( ( $curRowsRead % $curReadReportInterval ) == 0 ) { - $this->performanceLog( - $fh, - $curRowsRead . " " . ( microtime( true ) - $baseTime ) . "\n" - ); - $this->output( "\t$curRowsRead rows of $cur table read.\n" ); + $lastId = 0; + do { + $res = $dbw->query( + "SELECT cur_namespace,cur_title,cur_id FROM $cur " . + "WHERE cur_id > $lastId ORDER BY cur_id LIMIT 10000" + ); + foreach ( $res as $row ) { + $title = $row->cur_title; + if ( $row->cur_namespace ) { + $title = $contentLang->getNsText( $row->cur_namespace ) . ":$title"; } + $ids[$title] = $row->cur_id; + $curRowsRead++; + if ( $reportCurReadProgress ) { + if ( ( $curRowsRead % $curReadReportInterval ) == 0 ) { + $this->performanceLog( + $fh, + $curRowsRead . " " . ( microtime( true ) - $baseTime ) . "\n" + ); + $this->output( "\t$curRowsRead rows of $cur table read.\n" ); + } + } + $lastId = $row->cur_id; } - } - $dbw->freeResult( $res ); - $dbw->bufferResults( true ); + } while ( $res->numRows() > 0 ); $this->output( "Finished loading IDs.\n\n" ); $this->performanceLog( $fh, @@ -213,7 +217,6 @@ class ConvertLinks extends Maintenance { $numBadLinks++; } } - $dbw->freeResult( $res ); # $this->output( "rowOffset: $rowOffset\ttuplesAdded: " # . "$tuplesAdded\tnumBadLinks: $numBadLinks\n" ); if ( $tuplesAdded != 0 ) {