'sectionlink' and 'unit-pixel' added to the optional messages.
[lhc/web/wiklou.git] / maintenance / nextJobDB.php
1 <?php
2
3 /*
4 * Pick a database that has pending jobs
5 */
6
7 require_once( 'commandLine.inc' );
8
9 $pendingDBs = $wgMemc->get( 'jobqueue:dbs' );
10 if ( !$pendingDBs ) {
11 $pendingDBs = array();
12 # Cross-reference DBs by master DB server
13 $dbsByMaster = array();
14 $defaultMaster = $wgAlternateMaster['DEFAULT'];
15 foreach ( $wgLocalDatabases as $db ) {
16 if ( isset( $wgAlternateMaster[$db] ) ) {
17 $dbsByMaster[$wgAlternateMaster[$db]][] = $db;
18 } else {
19 $dbsByMaster[$defaultMaster][] = $db;
20 }
21 }
22
23 foreach ( $dbsByMaster as $master => $dbs ) {
24 $dbConn = new Database( $master, $wgDBuser, $wgDBpassword );
25
26 # Padding row for MySQL bug
27 $sql = "(SELECT '-------------------------------------------')";
28 foreach ( $dbs as $dbName ) {
29 if ( $sql != '' ) {
30 $sql .= ' UNION ';
31 }
32 $sql .= "(SELECT '$dbName' FROM `$dbName`.job LIMIT 1)";
33 }
34 $res = $dbConn->query( $sql, 'nextJobDB.php' );
35 $row = $dbConn->fetchRow( $res ); // discard padding row
36 while ( $row = $dbConn->fetchRow( $res ) ) {
37 $pendingDBs[] = $row[0];
38 }
39 }
40
41 $wgMemc->set( 'jobqueue:dbs', $pendingDBs, 300 );
42 }
43
44 if ( $pendingDBs ) {
45 echo $pendingDBs[mt_rand(0, count( $pendingDBs ) - 1)];
46 }
47
48 ?>