Помогите с PHP-скриптом.

CSgoServers.ru - Мониторинг CS серверов
Ответить
Сообщение
Автор
Аватара пользователя
SuBwooFer
Сержант
Сержант
Сообщения: 42
Зарегистрирован: 07.09.2008
Откуда: Москва
Контактная информация:

#1 Сообщение 01.04.2009, 01:36

Помогите что тут надо дописать? Проблема вся в том что когда Игровой сервер не работает скрипт не может найти данные и php выдает ошибку ...on line 99. Заранее спасибо. :Bravo:
<?php

error_reporting(E_ALL);
define ("SERVLIST", "servers.txt"); //файл со списком server:port

//------------------------------+

function GetServerInfo($server,$port)
{
$fp = @fsockopen("udp://".$server, $port);
if (!$fp) return false;

@fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
$start=time();
socket_set_timeout($fp,1);
$st=fread($fp,1);
$r=socket_get_status($fp);
$r=$r["unread_bytes"];
if ($r == 0)
{
@fclose($fp);
return false;
}
$st.=fread($fp,$r);
@fclose($fp);

$st=substr($st,5);
$address=SubStr($st,0,StrPos($st,chr(0)));
$address=str_replace(chr(0),"|",$address);
$st=SubStr($st,StrPos($st,chr(0))+1);
$name=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$map=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$current=ord(SubStr($st,0,1));
$max=ord(SubStr($st,1,1));

if ($map == "") return false;
$result['map'] = $map;
$result['name']= $name;
$result['current'] = $current;
$result['max'] = $max;

return $result;
}

//--------------------------------+

function ReadServers($servlist)
{
$file = @fopen($servlist,"rt");

if ($file) {
$lines = explode("\n", fread($file, filesize($servlist)));
foreach ($lines as $v) {
$elem = explode(":",$v);
$srv['ip'] = $elem[0];
$srv['port'] = $elem[1];
if (GetServerInfo($srv['ip'],$srv['port'])) $servers[] = $srv;
}
fclose($file);
return $servers;
} else return false;

}
//------------------------------+

$servers = array();
$servers = ReadServers(SERVLIST);

//------------------------------+
foreach ($servers as $k=>$v)
{

$serv = GetServerInfo($v['ip'],$v['port']);
if ($serv)
echo " <font color='blue'>
<table border='0' width='100%'>
<tr bgcolor='#e4eaf2'>
<td width='45%'><div align='center'>IP</div></td>
<td width='10%'><div align='center'>:</div></td>
<td width='45%'><div align='center'>".$v['ip'].":".$v['port']."</div></td>
</tr>
<tr bgcolor='#f4f7fa'>
<td width='45%'><div align='center'>Игра</div></td>
<td width='10%'><div align='center'>:</div></td>
<td width='45%'><div align='center'>".$serv['name']."</div></td>
</tr>
<tr bgcolor='#e4eaf2'>
<td width='45%'><div align='center'>Карта</div></td>
<td width='10%'><div align='center'>:</div></td>
<td width='45%'><div align='center'>".$serv['map']."</div></td>
</tr>
<tr bgcolor='#f4f7fa'>
<td width='45%'><div align='center'>Игроки</div></td>
<td width='10%'><div align='center'>:</div></td>
<td width='45%'><div align='center'>".$serv['current']."/".$serv['max']."</div></td>
</tr>
</table>
</font>";
}
else
echo "Не работает !";
?>
Изображение

KKSeven92
VIP
VIP
Сообщения: 1821
Зарегистрирован: 12.05.2008
Благодарил (а): 1 раз
Поблагодарили: 8 раз
Контактная информация:

#2 Сообщение 02.04.2009, 21:55

<td width='45%'><div align='center'>".$serv['current']."/".$serv['max']."</div></td>

попробуй заменить на

<td width='45%'><div align='center'>".$serv['current']."\".$serv['max']."</div></td>

Ответить