tyop in mrakup
[mediawiki.git] / maintenance / updateSpecialPages.php
blob5b30fa53994c8563389ce70fa65ceab814c1b83b
1 <?php
3 # Run this script periodically if you have miser mode enabled, to refresh the caches
5 require_once( 'commandLine.inc' );
7 require_once( 'SpecialPage.php' );
8 require_once( 'QueryPage.php' );
10 $wgOut->disable();
11 $dbw =& wfGetDB( DB_MASTER );
13 foreach ( $wgQueryPages as $page ) {
14 list( $class, $special ) = $page;
16 $specialObj = SpecialPage::getPage( $special );
17 if ( !$specialObj ) {
18 print "No such special page: $special\n";
19 exit;
21 $file = $specialObj->getFile();
22 if ( $file ) {
23 require_once( $file );
25 $queryPage = new $class;
27 printf( '%-30s', $special );
29 if ( $queryPage->isExpensive() ) {
30 $t1 = explode( ' ', microtime() );
31 # Do the query
32 $num = $queryPage->recache();
33 $t2 = explode( ' ', microtime() );
35 if ( $num === false ) {
36 print "FAILED: database error\n";
37 } else {
38 print "got $num rows in ";
40 $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]);
41 $hours = intval( $elapsed / 3600 );
42 $minutes = intval( $elapsed % 3600 / 60 );
43 $seconds = $elapsed - $hours * 3600 - $minutes * 60;
44 if ( $hours ) {
45 print $hours . 'h ';
47 if ( $minutes ) {
48 print $minutes . 'm ';
50 printf( "%.2fs\n", $seconds );
53 # Reopen any connections that have closed
54 if ( !$wgLoadBalancer->pingAll()) {
55 print "\n";
56 do {
57 print "Connection failed, reconnecting in 10 seconds...\n";
58 sleep(10);
59 } while ( !$wgLoadBalancer->pingAll() );
60 print "Reconnected\n\n";
61 } else {
62 # Commit the results
63 $dbw->immediateCommit();
66 # Wait for the slave to catch up
67 $slaveDB =& wfGetDB( DB_SLAVE, array('QueryPage::recache', 'vslow' ) );
68 while( $slaveDB->getLag() > 600 ) {
69 print "Slave lagged, waiting...\n";
70 sleep(30);
74 } else {
75 print "cheap, skipped\n";