Hi,
The main error wasthat you create a random array index from the correct array (upsites) but then use it to index another array which has a different number of mmembers (Your input array). As you close the socket after testing them, I used the uphosts to create an array of server names that are up, instead of sochet references. You can then index that array directly.
Furthermore, to facilitate expansion of your server options, ou are better of using a switch for the port numbers. I adjusted this.
$uphost = array(); // GOOD HOSTS
$sites = array(); // websites
$sites[] = "osi.techno-st.net";
$sites[] = "technoserv.no-ip.org";
$sites[] = "crossbow.timb.us";
$sites[] = "ph15.net";
foreach($sites as $site){
//////////////////////////////////
//// DEFINE PORTS FOR SERVERS ////
//////////////////////////////////
switch($site)
{
case "technoserv.no-ip.org":
$ext = ":8080";
break;
case "osi.techno-st.net":
$ext = ":8000";
break;
case "crossbow.timb.us":
$ext = ":5757";
break;
case "ph15.net":
$ext = ":8000";
break;
}
//////////////////////////////////
@$socket = fsockopen($site, 80, $errno, $errstr, 5);
if ($socket && $errno == 0){
$uphost[] = $site;
fclose($socket);
}
}
$getrandom = array_rand($uphost);// SELECT ONE RANDOM SITE THATS GOOD
$getserver = $uphost[$getrandom];
echo $getserver;