Please note that this list may change from time to time as mirrors are added and removed.

"green", "inaccessible" => "red", "outdated" => "orange", "unknown" => "gray", ); $redis = new Redis(); $redis->connect('127.0.0.1', 6379, 2); $ch = array(); $cmh = curl_multi_init(); foreach( $mirrors as $mirrorName => $mirrorInfo ) { $savedResult = $redis->isConnected() ? $redis->get('mirrorStatus-'.$mirrorName) : false; if($savedResult) { $mirrors[$mirrorName]['synctime'] = $savedResult; } else { $ch[$mirrorName] = curl_init(); curl_setopt( $ch[$mirrorName], CURLOPT_URL, $mirrorInfo['url'].'-synctime' ); curl_setopt( $ch[$mirrorName], CURLOPT_TIMEOUT, 10 ); curl_setopt( $ch[$mirrorName], CURLOPT_HEADER, true ); curl_setopt( $ch[$mirrorName], CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch[$mirrorName], CURLOPT_RETURNTRANSFER, true ); curl_multi_add_handle( $cmh, $ch[$mirrorName] ); } } if(!empty($ch)) { $running = null; do { curl_multi_exec($cmh, $running); } while($running); foreach( $ch as $mirrorName => $cs ) { $ret = curl_multi_getcontent( $cs ); curl_multi_remove_handle( $cmh, $cs ); if(!empty( $ret )) { if(!preg_match('#(^|\n)HTTP/1.1 200 OK#', $ret)) { $mirrors[$mirrorName]['synctime'] = '0'; } else { $mirrors[$mirrorName]['synctime'] = strtotime(preg_replace( "#.*\r\n#", '', $ret)); } } else { $mirrors[$mirrorName]['synctime'] = '-1'; } if($redis->isConnected()) { $redis->setEx( 'mirrorStatus-'.$mirrorName, $mirrors[$mirrorName]['synctime'] > 0 ? 1800 : 300, $mirrors[$mirrorName]['synctime'] ); } } } curl_multi_close($cmh); $redis->close(); foreach( $mirrors as $mirrorName => $mirrorInfo ) { if( $mirrorInfo['synctime'] < 0 ) { $mirrorStatus = 'inaccessible'; } if( $mirrorInfo['synctime'] == 0 || $mirrors['master']['synctime'] == 0 ) { $mirrorStatus = 'unknown'; } if( $mirrorInfo['synctime'] > 0 ) { $mirrorStatus = ( abs($mirrorInfo['synctime'] - $mirrors['master']['synctime']) > (60*60*30) /* 30 hours */ ? 'outdated' : 'active' ); } if(!isset($_GET['mr'])) { if(isset($statusType[$mirrorStatus])) { $mirrorStatus = ("". $mirrorStatus.""); } echo( "\n". "\n". "\n". "\n"); } else { if($mirrorStatus == 'active') { echo( $mirrorInfo['url']."\n" ); } } } if(!isset($_GET['mr'])) { ?>
".$mirrorInfo['descr'].": \n". "
".$mirrorInfo['url']."
".$mirrorStatus."