Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мониторинг CS
 
 автор: Demonik   (28.10.2009 в 08:01)   письмо автору
 
 

Есть код мониторинга как заставить этот код брать информацию ип:порт из mysql а не из файла ?

<?php

error_reporting
(E_ALL);

define ("SERVLIST""servers.txt"); // файл со списком server:port
define ("URL"'stats.php?server='); // скрипт подробной статистики по конкретному серверу
define("SERVERSBYPAGE"10); // количество серверов на страницу

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($filefilesize($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;

}

function 
AddServer($newserver,$servlist) {
if (!
preg_match('/^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d{1,5}$/xs',$_REQUEST['newserver'])) return false;
$f fopen($servlist,"a+");
if (!
$f) return false;

fputs($f,"\n".$_REQUEST['newserver']);
fclose($f);
return 
true;
}


if (isset(
$_REQUEST['newserver'])) {

if (!
preg_match('/^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d{1,5}$/xs',$_REQUEST['newserver']))
echo 
"Ошибка! Невозможно определить введенный сервер или порт";
else { list(
$newserv['ip'],$newserv['port']) = explode(":",$_REQUEST['newserver']);

if (!
GetServerInfo($newserv['ip'],$newserv['port'])) echo "Ошибка! Не удалось подключиться к серверу";

elseif (
in_array($newservReadServers(SERVLIST))) echo "Сервер уже есть в списке<br />";
elseif (!
AddServer($newserver,SERVLIST)) echo "Ошибка при добавлении сервера <br />";
else echo 
"Сервер добавлен в список <br />";
}
echo 
"<br/><a href=".$_SERVER['SCRIPT_NAME'].">Вернуться</a>";
exit;

}

$servers = array();
$servers ReadServers(SERVLIST);
$countpages ceil(count($servers)/SERVERSBYPAGE);

if (!isset(
$_GET['page']) || ((int)$_GET['page'] == 0) || $_GET['page'] < 1$_GET['page'] = 1;
{
for (
$i=0$i < ($_GET['page']-1)*SERVERSBYPAGE$i++) array_shift($servers);
while (
count($servers) > SERVERSBYPAGEarray_pop($servers);

}

?>

<table width='50%' cellpadding='3' cellspacing='3' bordercolor='#333333'>
<tr>
<td><div align='center'>Сервер:</div></td>
<td><div align='center'>Название:</div></td>
<td><div align='center'>Карта:</div></td>
<td><div align='center'>Игроков:</div></td>
<td><div align='center'>Статус:</div></td>
</tr>

<?php

foreach ($servers as $k=>$v) {

$serv GetServerInfo($v['ip'],$v['port']);
if (
$serv)
echo 
"<tr>
<td><div align='center'>
<a href="
.URL.$v['ip']." onmouseover=\"return overlib('На сервере сейчас играют:');\" onmouseout=\"return nd();\">".$v['ip'].":".$v['port']."<a></div></td>
<td><div align='center'>"
.$serv['name']."</div></td>
<td><div align='center'>"
.$serv['map']."</div></td>
<td><div align='center'>"
.$serv['current']."/".$serv['max']."</div></td>
<td height='50'><div align='center'>
<font color=green><b>Online</b></font>
</div></td></tr>"
;
}
echo 
"<br /></table>";

if (
count($servers) > SERVERSBYPAGE) {
echo 
"<br /><br /><p>Страницы:&nbsp;</p>";

for (
$i 1$i <= $countpages$i++);
{

if (
$i == $_GET['page'] ) echo "[".$i."]&nbsp;";
else
echo 
"[<a href=\"".$_SERVER['SCRIPT_NAME']."?page=$i\">$i</a>]&nbsp;";

}
}
else echo
"Мониторинг all Half-Life mode's";
echo 
"<br />
<p>Добавить сервер:</p>

<form action="
.$_SERVER['SCRIPT_NAME'].">
<input name=\"newserver\" type=\"text\" value=\"IP:порт\" onfocus=\"if(this.value=='IP:порт')this.value='';\" onblur=\"if(this.value=='')this.value='IP:порт';\">
<input type=\"submit\" value=\"Добавить\">
</form>"
;


?> 

Сам пробывал сделать но нечего у меня не получилось.

  Ответить  
 
 автор: Trianon   (28.10.2009 в 09:49)   письмо автору
 
   для: Demonik   (28.10.2009 в 08:01)
 

брать или класть?

  Ответить  
 
 автор: Demonik   (28.10.2009 в 09:55)   письмо автору
 
   для: Trianon   (28.10.2009 в 09:49)
 

брать информацию ип:порт из mysql а не из файла

  Ответить  
 
 автор: Trianon   (28.10.2009 в 10:43)   письмо автору
 
   для: Demonik   (28.10.2009 в 09:55)
 

а класть её туда кто будет?

  Ответить  
 
 автор: Demonik   (28.10.2009 в 10:47)   письмо автору
 
   для: Trianon   (28.10.2009 в 10:43)
 

С добавлением я разберусь

  Ответить  
 
 автор: Trianon   (28.10.2009 в 10:59)   письмо автору
 
   для: Demonik   (28.10.2009 в 08:01)
 

<?

function ReadServers($servlist
{
    
$res mysql_query($sql "SELECT `ip`, `port` FROM `$servlist` ORDER BY `ip`, `port`");
    if(!
$res) return false;
    for(
$servers = array() ; ($srv mysql_fetch_assoc($res)) != $servers[] = $srv) ;
    return 
$servers;
}

разбирайтесь.

  Ответить  
 
 автор: Demonik   (28.10.2009 в 11:28)   письмо автору
 
   для: Trianon   (28.10.2009 в 10:59)
 

Спасибо вроде работает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования