$this->mDescription = "Pick a database that has pending jobs";
$this->addOption( 'type', "The type of job to search for", false, true );
}
+
public function execute() {
global $wgMemc;
$type = $this->getOption( 'type', false );
? "jobqueue:dbs"
: "jobqueue:dbs:$type";
$pendingDBs = $wgMemc->get( $mckey );
-
+
# If we didn't get it from the cache
if( !$pendingDBs ) {
$pendingDBs = $this->getPendingDbs( $type );
$wgMemc->get( $mckey, $pendingDBs, 300 );
}
- # If we've got a pending job in a db, display it.
+ # If we've got a pending job in a db, display it.
if ( $pendingDBs ) {
$this->output( $pendingDBs[mt_rand(0, count( $pendingDBs ) - 1)] );
}
}
-
+
/**
* Get all databases that have a pending job
* @param $type String Job type
$lb = wfGetLB( $db );
$dbsByMaster[$lb->getServerName(0)][] = $db;
}
-
+
foreach ( $dbsByMaster as $master => $dbs ) {
$dbConn = wfGetDB( DB_MASTER, array(), $dbs[0] );
- $stype = $dbConn->addQuotes($type);
-
-
+ $stype = $dbConn->addQuotes( $type );
+
# Padding row for MySQL bug
$sql = "(SELECT '-------------------------------------------' as db)";
foreach ( $dbs as $wikiId ) {
foreach( $wgQueryPages as $page ) {
@list( $class, $special, $limit ) = $page;
-
+
# --list : just show the name of pages
if( $this->hasOption('list') ) {
$this->output( "$special\n" );
continue;
}
-
+
if ( !$this->hasOption('override') && $wgDisableQueryPageUpdate && in_array( $special, $wgDisableQueryPageUpdate ) ) {
$this->output( sprintf( "%-30s disabled\n", $special ) );
continue;
}
-
+
$specialObj = SpecialPage::getPage( $special );
if ( !$specialObj ) {
$this->output( "No such special page: $special\n" );
require_once( $file );
}
$queryPage = new $class;
-
+
if( !$this->hasOption('only') || $this->getOption('only') == $queryPage->getName() ) {
$this->output( sprintf( '%-30s ', $special ) );
if ( $queryPage->isExpensive() ) {
$this->output( "FAILED: database error\n" );
} else {
$this->output( "got $num rows in " );
-
+
$elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]);
$hours = intval( $elapsed / 3600 );
$minutes = intval( $elapsed % 3600 / 60 );