<?
##Settings##
//Define all servers here (add more if needed)
$server_address[0]='65.75.186.30';
$server_port[0]=8400;
$server_title[0]='fuseRADIO 24/7 Mix';
$server_address[1]='67.19.102.78';
$server_port[1]=8010;
$server_title[1]='fuseRADIO 24/7 Mix';
$server_address[2]='67.19.102.78';
$server_port[2]=8012;
$server_title[2]='fuseRADIO 24/7 Mix';
//Set mode (either load_balancing, random, or new_random)
// $mode='load_balancing';
// $mode='random';
$mode='load_balancing';
##Settings complete##
if($mode=='random'){
mt_srand((double) microtime() * 1000000);
for($i=0; $i<count($server_address); $i++){
$server[$i]=mt_rand(0, count($server_address)-1);
for($j=0; $j<$i; $j++){
if($server[$j]==$server[$i]){
$i--;
break;
}
}
}
}
elseif($mode=='load_balancing'){
//This is really not a good way to do this since each request will
//query all the servers. It would be better to have a cache that is updated
//periodically (file or database) and just grab the current numbers from there,
//but since this is just something to go off of I will do it by contacting each
//server.
for($i=0; $i<count($server_address); $i++){
$fp = fsockopen($server_address[$i], $server_port[$i], $errnum, $errstr, 2);
if ($fp){
$buffer='';
fwrite($fp, "GET /7.html HTTP/1.0\r\nUser-Agent: Playlist Generator(Mozilla)\r\n\r\n");
while(!feof($fp)){
$buffer.=fread($fp, 1024);
}
fclose($fp);
$data=eregi_replace(".*<body>(.*)</body>.*", '\1', $buffer);
$numbers=explode(",", $data);
$lnr[$i]=$numbers[0];
$mx[$i]=$numbers[3];
$percent_filled[$i][0]=$numbers[0]/$numbers[3];
$percent_filled[$i][1]=$i;
}
else{
$lnr[$i]=$listen;
$mx[$i]=$max;
$percent_filled[$i][0]=1.1;
$percent_filled[$i][1]=$i;
}
}
sort($percent_filled);
reset($percent_filled);
for($i=0; $i<count($server_address); $i++){
$server[$i]=$percent_filled[$i][1];
}
}
elseif($mode=='new_random'){
//Doubt it is useful for this, but if you had a LARGE number of servers this would
//be faster since in the other random there are only as many random numbers as servers
//and technically you could get stuck in a for loop for a long time trying to get an unused
//random number. This method uses 1000 times the number of servers so the probability
//of getting repeats is much less meaning less time in the for loop that makes sure the
//random numbers are unique.
mt_srand((double) microtime() * 1000000);
for($i=0; $i<count($server_address); $i++){
$rand[$i][0]=mt_rand(0, (1000*count($server_address)));
$rand[$i][1]=$i;
for($j=0; $j<$i; $j++){
if($rand[$j][0]==$rand[$i][0]){
$i--;
break;
}
}
}
sort($rand);
reset($rand);
for($i=0; $i<count($server_address); $i++){
$server[$i]=$rand[$i][1];
}
}
else{
for($i=0; $i<count($server_address); $i++){
$server[$i]=$i;
}
}
$totall=$lnr[$server[0]]+$lnr[$server[1]]+$lnr[$server[2]];
$totalm=$mx[$server[0]]+$mx[$server[1]]+$mx[$server[2]];
$total_entries=count($server_address)+1;
header("Content-Type: audio/x-scpls");
echo("[playlist]\n");
for($i=0; $i<count($server_address); $i++){
$file=$i+1;
echo('File'.$file.'=http://'.$server_address[$server[$i]].':'.$server_port[$server[$i]].'/');
echo("\n");
echo('Title'.$file.'=(#'.$file.' '.$lnr[$server[$i]].'/'.$mx[$server[$i]].') '.$server_title[$server[$i]].'');
echo("\n");
echo("Length$file=-1\n");
}
echo("File4=http://hmmm:8743/");
echo("\n");
echo("Title4=Current total listeners (".$totall."/".$totalm.")");
echo("\n");
echo("Length4=-1\n");
echo("NumberOfEntries=$total_entries\n
Version=2\n");
?>