Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: fsockopen keli ip

Parašė Bencius· 2013 Sau. 20 23:01:28
#1

Sveiki, turiu tokį kodą:

<?php
 
$packet = "\xFF\xFF\xFF\xFFTSource Engine Query\x00";
 
require('config.php');
 
$query = mysql_query("SELECT * FROM serveriai ORDER BY `id`") or die(mysql_error());
 
function getnextstring(&$data) {
    $temp = "";
    $counter = 0;
    while (ord($data[$counter++]) != 0)
        $temp.=$data[$counter - 1];
    $data = substr($data, strlen($temp) + 1);
    return $temp;
}
 
function getnextbytevalue(&$data) {
    $temp = ord($data[0]);
    $data = substr($data, 1);
    return $temp;
}
 
while ($row = mysql_fetch_array($query)) {
 
	$ips = $row['adr']; 
	$ports = $row['port'];
 
    if (!$live_server = fsockopen("udp://".$ips.":".$ports)) {
        $output = "Off";
    } else {
        fwrite($live_server, $packet);
        socket_set_timeout($live_server, 1, 0);
        $junk = fread($live_server, 5);
        $status = socket_get_status($live_server);
        $do = 1;
        $server_info = "";
 
        while ($do) {
            $str_1 = fread($live_server, 1);
            $server_info .= $str_1;
            $status = socket_get_status($live_server);
            if ($status["unread_bytes"] == 0) {
                $do = 0;
            }
        }
        fclose($live_server);
 
        if (strlen($server_info) > 0) {
            $success = 1;
            $junk = getnextstring($server_info);
            $servername = getnextstring($server_info);
            $map = getnextstring($server_info);
            $junk = getnextstring($server_info);
            $junk = getnextstring($server_info);
            $players = getnextbytevalue($server_info);
            $maxplayers = getnextbytevalue($server_info);
        }
 
        if ($players != '') {
            $players = $players;
        } else {
            $players = "0";
        }
 
        if ($maxplayers != '') {
            $maxplayers = $maxplayers;
        } else {
            $maxplayers = "0";
        }
        if ($players < $maxplayers) {
            $output = "<font color='green'>Online</font>";
        } else {
            $output = "<font color='#54ff00'>Full</font>";
        }
        if ($output != "Full" and $players != "0" or $maxplayers != "0") {
            $output = $output;
        } else {
            $output = "<font color='red'>Offline</font>";
        }
        if ($map != '') {
            $map = "" . $map . "";
        } else {
            $map = "-----";
        }
        if ($servername != '') {
            $servername = $servername;
        } else {
            $servername = "<font color='#ff3600'>Serveris neveikia.</font>";
        }
    }
}
?>


Esu pasidaręs while, ir pagal įdėją turėtų atvaizduoti visus įrašus esančius mysql duombazėj, bet atvaizduoja tik vieną.
Gal galite pasakyti kame yra problema? Nagrinėjausi kitus kodus, tai mačiau, kad būna dar įtaikytas foreach, bet nelabai suprantu, ką jis daro. Jei galite padėkit prašau, manau ne man vienam ši tema pravers. Dėkui.