X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FupdateSpecialPages.php;h=3f1a90bb3f7e4d4ba38e1745b47e5d22d4395507;hb=89a055491c988688c13b26184c06ba9d7b3585f3;hp=c6c464147c6d29d42b633092fbf32bf056c39796;hpb=4ca5aded9b33fb08606fdcaa5aa63111c872ebaf;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/updateSpecialPages.php b/maintenance/updateSpecialPages.php index c6c464147c..3f1a90bb3f 100644 --- a/maintenance/updateSpecialPages.php +++ b/maintenance/updateSpecialPages.php @@ -1,7 +1,7 @@ disable(); + global $IP, $wgSpecialPageCacheUpdates, $wgQueryPages, $wgQueryCacheLimit, $wgDisableQueryPageUpdate; + $dbw = wfGetDB( DB_MASTER ); - foreach( $wgSpecialPageCacheUpdates as $special => $call ) { - if( !is_callable($call) ) { - $this->error( "Uncallable function $call!\n" ); + foreach ( $wgSpecialPageCacheUpdates as $special => $call ) { + if ( !is_callable( $call ) ) { + $this->error( "Uncallable function $call!" ); continue; } $t1 = explode( ' ', microtime() ); call_user_func( $call, $dbw ); $t2 = explode( ' ', microtime() ); $this->output( sprintf( '%-30s ', $special ) ); - $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]); + $elapsed = ( $t2[0] - $t1[0] ) + ( $t2[1] - $t1[1] ); $hours = intval( $elapsed / 3600 ); $minutes = intval( $elapsed % 3600 / 60 ); $seconds = $elapsed - $hours * 3600 - $minutes * 60; @@ -57,35 +63,43 @@ class UpdateSpecialPages extends Maintenance { } $this->output( sprintf( "completed in %.2fs\n", $seconds ) ); # Wait for the slave to catch up - wfWaitForSlaves( 5 ); + wfWaitForSlaves(); } - foreach( $wgQueryPages as $page ) { - @list( $class, $special, $limit ) = $page; - + // This is needed to initialise $wgQueryPages + require_once( "$IP/includes/QueryPage.php" ); + + foreach ( $wgQueryPages as $page ) { + list( $class, $special ) = $page; + $limit = isset( $page[2] ) ? $page[2] : null; + # --list : just show the name of pages - if( $this->hasOption('list') ) { + if ( $this->hasOption( 'list' ) ) { $this->output( "$special\n" ); continue; } - - if ( $this->hasOption('override') && $wgDisableQueryPageUpdate && in_array( $special, $wgDisableQueryPageUpdate ) ) { + + if ( !$this->hasOption( 'override' ) && $wgDisableQueryPageUpdate && in_array( $special, $wgDisableQueryPageUpdate ) ) { $this->output( sprintf( "%-30s disabled\n", $special ) ); continue; } - - $specialObj = SpecialPage::getPage( $special ); + + $specialObj = SpecialPageFactory::getPage( $special ); if ( !$specialObj ) { $this->output( "No such special page: $special\n" ); exit; } - if ( !class_exists( $class ) ) { - $file = $specialObj->getFile(); - require_once( $file ); + if ( $specialObj instanceof QueryPage ) { + $queryPage = $specialObj; + } else { + if ( !class_exists( $class ) ) { + $file = $specialObj->getFile(); + require_once( $file ); + } + $queryPage = new $class; } - $queryPage = new $class; - - if( !$this->hasOption('only') || $this->getOption('only') == $queryPage->getName() ) { + + if ( !$this->hasOption( 'only' ) || $this->getOption( 'only' ) == $queryPage->getName() ) { $this->output( sprintf( '%-30s ', $special ) ); if ( $queryPage->isExpensive() ) { $t1 = explode( ' ', microtime() ); @@ -96,8 +110,8 @@ class UpdateSpecialPages extends Maintenance { $this->output( "FAILED: database error\n" ); } else { $this->output( "got $num rows in " ); - - $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]); + + $elapsed = ( $t2[0] - $t1[0] ) + ( $t2[1] - $t1[1] ); $hours = intval( $elapsed / 3600 ); $minutes = intval( $elapsed % 3600 / 60 ); $seconds = $elapsed - $hours * 3600 - $minutes * 60; @@ -108,21 +122,21 @@ class UpdateSpecialPages extends Maintenance { $this->output( $minutes . 'm ' ); } $this->output( sprintf( "%.2fs\n", $seconds ) ); - } - # Reopen any connections that have closed - if ( !wfGetLB()->pingAll()) { - $this->output( "\n" ); - do { - $this->error( "Connection failed, reconnecting in 10 seconds...\n" ); - sleep(10); - } while ( !wfGetLB()->pingAll() ); - $this->output( "Reconnected\n\n" ); - } else { - # Commit the results - $dbw->immediateCommit(); - } - # Wait for the slave to catch up - wfWaitForSlaves( 5 ); + } + # Reopen any connections that have closed + if ( !wfGetLB()->pingAll() ) { + $this->output( "\n" ); + do { + $this->error( "Connection failed, reconnecting in 10 seconds..." ); + sleep( 10 ); + } while ( !wfGetLB()->pingAll() ); + $this->output( "Reconnected\n\n" ); + } else { + # Commit the results + $dbw->commit( __METHOD__ ); + } + # Wait for the slave to catch up + wfWaitForSlaves(); } else { $this->output( "cheap, skipped\n" ); } @@ -132,4 +146,4 @@ class UpdateSpecialPages extends Maintenance { } $maintClass = "UpdateSpecialPages"; -require_once( DO_MAINTENANCE ); +require_once( RUN_MAINTENANCE_IF_MAIN );