-
Status serverów
Witam,
mam gotowy kod do wklejenia na stronie i chcę go dostosować pod vB. Chodzi mi o to, żeby pod shoutboxem wyświetlał się status/y czy servery są online czy offline, tak jak np. tutaj: www.amazingmuonline.pl
Kod:
Kod:
<?php
function serverStatus($ip, $isIP = true, $port = 44405)
{
/*
* zmienna $port trzyma domyslny port dla serwerow
* zmienna $isIP trzyma informacje o tym czy wartosc
* w zmiennej $ip to host/adres ip
*/
$serverNames = array (
'hefron.no-ip.info:55901' => 'Herfon Mu',
'82.146.225.113:55901' => 'Warka Mu'
);
if($isIP)
{
$tablica['ip'] = $ip;
$tablica['host'] = gethostbyaddr($ip);
}
else
{
$tablica['ip'] = gethostbyname($ip);
$tablica['host'] = $ip;
}
if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
{
$tablica['status'] = true;
}
else
{
$tablica['status'] = false;
}
$tablica['port'] = $port;
$tablica['name'] = $serverNames[$ip.':'.$port];
return $tablica;
}
# przykład użycia
$s2 = serverStatus('hefron.no-ip.info', false); # pobieramy info z serwera hefron.no-ip.info (HOST) o porcie domyslnym (55901)
$s1 = serverStatus('82.146.225.113', true, '55901'); # pobieramy info z serwera 82.146.225.113 (IP) o porcie 55901 (przeciez nie trzeba bylo go pisac)
# jezeli jako pierwszy parametr podalismy adres ip to jako drugi podajemy true,
ezeli natomiast jest to host to jako drugi parametr podajemy false
$status_1 = ($s1['status']) ? 'Online' : 'Offline'; # jezeli status jest 1 to Online
$status_2 = ($s2['status']) ? 'Online' : 'Offline'; # a jezeli 0 to Offline
$color_1 = ($s1['status']) ? 'green' : 'red';
$color_2 = ($s2['status']) ? 'green' : 'red';
echo '<b>'.$s1['name'].':</b> <span style=\"color:'.$color_2.';\">'.$status_1.'</span>';
echo '<br /><br />';
echo '<b>'.$s2['name'].':</b> <span style=\"color:'.$color_1.';\">'.$status_2.'</span>';
# przykład użycia
?>
-
Widzę tutaj 3 rozwiązanie. Pierwsze to modyfikowanie samych skryptów. Tego rozwiązania nie polecam, bo będziesz miał robotę przy każdym update forum.
Drugie rozwiązanie to napisanie wtyczki stosownej. Jeśli nie wiesz jak, możesz to zlecić komuś lub pokopać w dokumentacji.
Trzecie rozwiązanie, najprostsze, ale zarazem najmniej eleganckie, to wstawić (np. do stopki) IFRAME, w którym będzie twoja strona, czyli to, co wpisałeś powyżej + jakiś nagłówek i stopka HTMLa.
Myślę, że niezależnie od wybranej metody, przydało by ci się jednak dodać do całej tej zabawy jakieś cacheowanie i odświeżanie statusu serwera co jakiś czas tylko (np. raz na 5 minut) zamiast przy każdej wizycie każdego użytkownika, bo to spowoduje ci zamulenie serwera oraz wydłużenie ładowania strony użytkownikom.
-
Zwyczajnie chciałbym mieć taki system jak na tamtej stronce. Sam bym nie zrobił tego bo do końca nie ogarniam.
Doda tylko, że ten skrypt łączy się z podanym ip i portem i sprawdza czy jest online/offline.
Wykonałby ktoś?
-
Jeżeli ten skrypt, który podałeś działa ok i chcesz go wstawić to stwórz plugin PHP jest kilka tematów na forum o tym i do szablonu wstaw tylko zmienna i będzie ok :)
@edit
http://vbhelp.pl/artykua-y-faq-f22/j...nie-t1049.html
-
Działa tylko że wyskakuje mi jeden błąd. Mógłby ktoś go sprawdzić? Bo ja już nie orientuję co jest źle..
-
-
Kod:
Parse error: syntax error, unexpected T_STRING in /home/accounts_c/crd11/public_html/status.php on line 46
-
Kod:
<?php
function serverStatus($ip, $isIP = true, $port = 44405)
{
/*
* zmienna $port trzyma domyslny port dla serwerow
* zmienna $isIP trzyma informacje o tym czy wartosc
* w zmiennej $ip to host/adres ip
*/
$serverNames = array (
'hefron.no-ip.info:55901' => 'Herfon Mu',
'82.146.225.113:55901' => 'Warka Mu'
);
if($isIP)
{
$tablica['ip'] = $ip;
$tablica['host'] = gethostbyaddr($ip);
}
else
{
$tablica['ip'] = gethostbyname($ip);
$tablica['host'] = $ip;
}
if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
{
$tablica['status'] = true;
}
else
{
$tablica['status'] = false;
}
$tablica['port'] = $port;
$tablica['name'] = $serverNames[$ip.':'.$port];
return $tablica;
}
# przykład użycia
$s2 = serverStatus('hefron.no-ip.info', false); # pobieramy info z serwera hefron.no-ip.info (HOST) o porcie domyslnym (55901)
$s1 = serverStatus('82.146.225.113', true, '55901'); # pobieramy info z serwera 82.146.225.113 (IP) o porcie 55901 (przeciez nie trzeba bylo go pisac)
# jezeli jako pierwszy parametr podalismy adres ip to jako drugi podajemy true, jezeli natomiast jest to host to jako drugi parametr podajemy false
$status_1 = ($s1['status']) ? 'Online' : 'Offline'; # jezeli status jest 1 to Online
$status_2 = ($s2['status']) ? 'Online' : 'Offline'; # a jezeli 0 to Offline
$color_1 = ($s1['status']) ? 'green' : 'red';
$color_2 = ($s2['status']) ? 'green' : 'red';
echo '<b>'.$s1['name'].':</b> <span style=\"color:'.$color_2.';\">'.$status_1.'</span>';
echo '<br /><br />';
echo '<b>'.$s2['name'].':</b> <span style=\"color:'.$color_1.';\">'.$status_2.'</span>';
# przykład użycia
?>
-
Kod:
Fatal error: Cannot redeclare serverstatus() (previously declared in /home/accounts_c/crd11/public_html/status.php:2) in /home/accounts_c/crd11/public_html/status.php on line 94
-