f67b0266a335d65d3c91d578205e88d086a1e8a9
[lhc/web/wiklou.git] / maintenance / nextJobDB.php
1 <?php
2
3 $user = 'wikiuser';
4 $password = `/home/wikipedia/bin/wikiuser_pass`;
5 $availableDBs = array_map( 'trim', file( "/home/wikipedia/common/pmtpa.dblist" ) );
6 shuffle( $availableDBs );
7
8 $dbs = array();
9
10 # Connect to enwiki
11 mysql_connect( 'db4', $user, $password ) || myerror();
12 mysql_select_db( 'enwiki' ) || myerror();
13 ( $res = mysql_query( 'SELECT 1 FROM job LIMIT 1' ) ) || myerror();
14 $enwikiHasJobs = ( mysql_num_rows( $res ) != 0 );
15 mysql_free_result( $res );
16 mysql_close();
17
18
19 # Now try the rest
20 mysql_connect( 'ixia', $user, $password ) || myerror();
21
22 $sql = "(SELECT '-------------------------------------------')";
23 foreach ( $availableDBs as $db ) {
24 if ( $db == 'enwiki' ) {
25 continue;
26 }
27 if ( $sql != '' ) {
28 $sql .= ' UNION ';
29 }
30 $sql .= "(SELECT '$db' FROM `$db`.job)";
31 }
32 $sql .= ' LIMIT 1,1';
33 ( $res = mysql_query( $sql ) ) || myerror();
34 $row = mysql_fetch_row( $res );
35 if ( $row ) {
36 $db = $row[0];
37 } else {
38 $db = false;
39 }
40
41 mysql_free_result( $res );
42 mysql_close();
43
44
45 if ( $enwikiHasJobs ) {
46 if ( $db ) {
47 # Choose enwiki with arbitrary constant probability
48 if ( mt_rand( 0, 4 ) == 0 ) {
49 $db = 'enwiki';
50 }
51 } else {
52 $db = 'enwiki';
53 }
54 }
55
56 if ( $db ) {
57 echo $db;
58 }
59
60 function myerror() {
61 $f = fopen( 'php://stderr', 'w' );
62 fwrite( $f, mysql_error() . "\n" );
63 exit(1);
64 }
65 ?>