@topic jak zabezieczyc sie przed zapetleniem programu?, fsockopen + pusta odp servera
witam
mam problem ze skryptem do sprawdzania statusu servera do gry
skrypt dizala tak:
laczy sie z serverem poprzez fsockopen
potem jak server jest online wysyla mu bajtow anych, server z gra odpowiada i generuje plik XML , wsyzstkie inne servery (nie do gry)[np http] nie generuja xmla i petla while mi sie zapetla az wywala blad po 60 sec
kod funkcji
function otserv_info($host = 'localhost', $port = 7171)
{
$sock = @fsockopen($host, $port, $errno, $errstr, 1);
if($sock)
{
fwrite($sock, chr(6).chr(0).chr(255).chr(255).'info');
while(!feof($sock))
$data .= fgets($sock, 1024);
fclose($sock);
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$otserv = array(
'status' => 1,
'uptime' => $vals[1]['attributes']['UPTIME'],
'name' => $vals[1]['attributes']['SERVERNAME'],
'from' => $vals[1]['attributes']['LOCATION'],
'url' => $vals[1]['attributes']['URL'],
'source' => $vals[1]['attributes']['SERVER'].' ('.$vals[1]['attributes']['VERSION'].')',
'playersonline' => $vals[3]['attributes']['ONLINE'],
'playersmax' => $vals[3]['attributes']['MAX'],
'info' => $vals[6]['value']
);
}
else
{
$otserv = array(
'status' => 0,
'errno' => $errno,
'errstr' => $errstr
);
}
return $otserv;
}
gdy wywoluje ja tak:
print_r(otserv_info('www.guia3d.com'));
wszystko jest ok, bo to server gry
lecz gdy wywolam np server www
print_r(otserv_info('www.wp.pl', 80));
zapetla sie i wywala error
jak to naprawic ?
myslalem zeby usunac petle ale nie mam pomyslu czym ja zastapic.