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 );