00001 <?php
00002
00009 require_once( dirname(__FILE__) . '/Maintenance.php' );
00010
00011 class DatabaseLag extends Maintenance {
00012 public function __construct() {
00013 parent::__construct();
00014 $this->mDescription = "Shows database lag";
00015 $this->addOption( 'r', "Don't exit immediately, but show the lag every 5 seconds" );
00016 }
00017
00018 public function execute() {
00019 if ( $this->hasOption( 'r' ) ) {
00020 $lb = wfGetLB();
00021 echo 'time ';
00022 for( $i = 1; $i < $lb->getServerCount(); $i++ ) {
00023 $hostname = $lb->getServerName( $i );
00024 printf( "%-12s ", $hostname );
00025 }
00026 echo "\n";
00027
00028 while( 1 ) {
00029 $lb->clearLagTimeCache();
00030 $lags = $lb->getLagTimes();
00031 unset( $lags[0] );
00032 echo gmdate( 'H:i:s' ) . ' ';
00033 foreach( $lags as $i => $lag ) {
00034 printf( "%-12s " , $lag === false ? 'false' : $lag );
00035 }
00036 echo "\n";
00037 sleep( 5 );
00038 }
00039 } else {
00040 $lb = wfGetLB();
00041 $lags = $lb->getLagTimes();
00042 foreach( $lags as $i => $lag ) {
00043 $name = $lb->getServerName( $i );
00044 $this->output( sprintf( "%-20s %s\n" , $name, $lag === false ? 'false' : $lag ) );
00045 }
00046 }
00047 }
00048 }
00049
00050 $maintClass = "DatabaseLag";
00051 require_once( DO_MAINTENANCE );