Так, не знал куда "запостить", думаю здесь будет не плохо лежать, а если что сами раскидаете.
Вот решил поделится своей задумкой с народом, если может и повторяю чьюто идею, то извените, не встречал.
А идея вот в чем:
Многие проверяют работает ли сервер открывая и закрывая порты 2106 и 7777. Можно использовать простенький скрипт, который при каждой загрзуке будет проверять состояния подключений.
Но это еще куда ни шло, если таких проверок мало. А если их ой как много?
Вот тут уже можно предположить, а что если проверять состояние раз в 30 сек. ?!
А данные записывать в файл из которого можно будет оперативно получить информацию о сервере.
При выполнении скрипт берет временный файл с данными по серверу, если разница во времени между последней проверкой и временем на данный момент больше указанного в конфиге, то проверяем по новой подключение и записываем в файл.
Ну и как тут не обойтись без кода, иначе понять будет труднее.
code text
<?php
...
$server_ip = '127.0.0.1'; // есно айпи сервера (либо адрес)
$time_check = 30; // в сек.
//------------------------------------------------------------------------------
unset($tmp,$fs,$t,$login_s,$game_s);
if(file_exists('server_status.temp')){
$tmp = file('server_status.temp');
list($t,$login_s,$game_s) = split(":",$tmp[0]);
if((time()-$t)>$time_check){
$tmp = check_ports($server_ip);
check_ports_to_file($tmp);
list($login_s,$game_s) = split(":",$tmp);
}
}else{
$tmp = check_ports($server_ip);
check_ports_to_file($tmp);
list($login_s,$game_s) = split(":",$tmp);
}
//---------------------
function check_ports_to_file($tmp){
$fs = fopen('server_status.temp','w');
fputs($fs,time().":".$tmp);
fclose($fs);
}
//---------------------
function check_ports($host){
$login_s=0;
$game_s=0;
$fp = @fsockopen($host, 2106, $err_n, $err_str, 0.5);
if ($fp)
{
fclose($fp);
$login_s=1;
}
$fp = @fsockopen($host, 7777, $err_n, $err_str, 0.5);
if ($fp)
{
fclose($fp);
$game_s=1;
}
return ($login_s.":".$game_s.":");
}
//------------------------------------------------------------------------------
...
?>
(c)Dmytro