Вход

Просмотр полной версии : Монитор для серверов ИЛ2 на РНР



kernel_panic!
18.12.2003, 20:33
Столкнулся с необходимостью такого для сквадового сайта/сервера. Пришлось написать. Похож на http://www.sukhoi.ru/stat/

Выкладываю, может кому понадибится.

kernel_panic!
19.12.2003, 02:16
Исправленая версия (старая только один пакет читала :) ).
Добавлен шаблон для вывода (содран с ку3осп). Легко модифицируется под конкретные нужды.

Paul_II
19.12.2003, 09:15
Был бы нужен, обязательно бы взял - люблю я php :)

Drim
19.12.2003, 15:15
Спасибо! Жаль, что шаблон почти редактировать низя (например поставить другой шрифт, порядок переменных или статистики поменять ). :(

kernel_panic!
19.12.2003, 15:25
на то он и шаблон чтобы его редактировать :)

переделаваешь как хочешь, а в тех местах где нужно вставить данные и пишешь название переменной с этими данными

IvanoBulo
19.12.2003, 16:05
php, asp, jsp это всё пережитки прошлого.
Apache Cocoon - вот это вещь!

Сори за флейм.

Drim
20.12.2003, 12:03
Да нет, ты меня не понял. У меня при более менее значительных изменениях в шаблоне былезает вот такая строка:
Parse error: parse error in /home/il2sturmovikru/228shad/313shap/stat/template.php on line 12
(13, 14 и т.д.)
Вот здесь сам файл: http://228shad.il2sturmovik.ru/313shap/stat/
У нас есть сквадовский сервак, но щас он настраивается, поэтому щас проверяю стат с нулевым.

kernel_panic!
20.12.2003, 15:47
здается мне что ты с синтаксисом не все усмотрел,- может двойную кавычку куда сунул или еще что-то в этом роде

попробуй кавычки у print заменить на одинарные

Drim
20.12.2003, 17:06
Если не трудно, ткни носом в ошибку. Заранее безмерно благодарен!
index.php
<?php

$ip = "213.145.43.250";
$port = "21000";

$ip = "213.145.43.250";
$port = "21000";

$fp = fsockopen("udp://$ip", $port);

if (!$fp)
{
$text .= "ОШИБКА: Сервер не доступен<br>\n";
}
else
{
$in = "";
$out = "\\status\\";
fwrite ($fp, $out);

while (!strstr($in, "final"))
{
$in .= fread($fp, 2048);
}
fclose($fp);

// print "$in";

$in = explode ("\\", $in);
for ($i=1; $i < count($in); $i+=2)
{
$arr[$in[$i]] = $in[$i+1];
}

$red_ping = 0;
$red_players = 0;

$blue_ping = 0;
$blue_players = 0;

for ($i=0; $i < 32; $i++)
{
if (isset($arr["player_$i"]))
{
$player = "player_$i";
$score = "score_$i";
$ping = "ping_$i";

if ($arr["team_$i"] == "1")
{
$red_ping += $arr[$ping];
$red_players++;
$red .= "<tr><td>$arr[$score]</td><td>$arr[$ping]</td><td>$arr[$player]</td></tr>\n";
}
if ($arr["team_$i"] == "2")
{
$blue_ping += $arr[$ping];
$blue_players++;
$blue .= "<tr><td>$arr[$score]</td><td>$arr[$ping]</td><td>$arr[$player]</td></tr>\n";
}
if ($arr["team_$i"] == "0")
{
$unconnected .= "<tr><td>$arr[$score]</td><td>$arr[$ping]</td><td>$arr[$player]</td></tr>\n";
}
print " ";
}
}

$red_score = $arr["score_t1"];
$red_score += 0;
$blue_score = $arr["score_t2"];
$blue_score += 0;

@$red_avgping = $red_ping / $red_players;
$red_avgping = round($red_avgping += 0, 0);

@$blue_avgping = $blue_ping / $blue_players;
$blue_avgping = round($blue_avgping += 0, 0);

require ("template.php");

print "<br><table>\n";
print " <tr><td><b>Переменная</b></td><td><b>Значение</b></td></tr>\n";
while (list($key, $var) = each($arr))
{
print " <tr><td>$key</td><td>$var</td></tr>\n";
}
print "</table>\n";
}

?>

template.php
<?
print "
<table width=100% border=0 cellspacing=0 cellpadding=5>
<tr valign=top>
<td>
<table width=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td bgcolor=#FF6666>
<table width=100% border=0 cellspacing=0 cellpadding=5>
<tr>
<td>
<font face="Arial"><b>$red_score</b></font></td>
<td align=right><font face="Arial" size="2">ИГРОКОВ<br>$red_players</font></td>
<td align=right><font face="Arial" size="2">СРЕДНИЙ ПИНГ<br>$red_avgping</font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor=#FF9999>
<table width=100% border=1 cellspacing=0 cellpadding=0>
<tr>
<td><font face="Arial" size="2">Очки:</font></td>
<td><font face="Arial" size="2">Пинг:</font></td>
<td><font face="Arial" size="2">Ник:</font></td>
</tr>
<font face="Arial">$red </font>
</table>
</td>
</tr>
</table>
</td>
<td>
<table width=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td bgcolor=#6666FF>
<table width=100% border=0 cellspacing=0 cellpadding=5>
<tr>
<td>
<font face="Arial"><b>$blue_score</b></font></td>
<td align=right><font face="Arial" size="2">ИГРОКОВ<br>$blue_players</font></td>
<td align=right><font face="Arial" size="2">СРЕДНИЙ ПИНГ<br>$blue_avgping</font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor=#9999FF>
<table width=100% border=1 cellspacing=0 cellpadding=0>
<tr>
<td><font face="Arial" size="2">Очки:</font></td>
<td><font face="Arial" size="2">Пинг:</font></td>
<td><font face="Arial" size="2">Ник:</font></td>
</tr>
<font face="Arial">$blue </font>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr valign=top align=center>
<td colspan=2><font face="Arial">Не в игре:</font></td>
</tr>
<tr valign=top>
<td colspan=2>
<table width=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td width=25%>&nbsp;</td>
<td>
<table width=100% border=1 cellspacing=0 cellpadding=0>
<tr>
<td><font face="Arial" size="2">Очки:</font></td>
<td><font face="Arial" size="2">Пинг:</font></td>
<td><font face="Arial" size="2">Ник:</font></td>
</tr>
<font face="Arial">$unconnected </font>
</table>
</td>
<td width=25%>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
";
?>

kernel_panic!
20.12.2003, 17:44
внутри print ""; в темлейте не должно быть двойных кавычек

так что все твои <font face="Arial" size="2"> портят дело
удаляй двойные кавычки, либо заменяй их на \"

Drim
20.12.2003, 19:17
Вери биг сенькс! :)

Drim
20.12.2003, 22:26
Еще бы хотелось, что-бы в то время, когда сервер в дауне выводилось сообщение об этом (сейчас страница просто не открывается).

kernel_panic!
21.12.2003, 01:10
неплохо приукрасил :)

в обще-то если не удается создать сокет она пишет что сервер недоступен