Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
19.01.12, 11:10
|
#1
|
Anfänger
Registriert seit: Sep 2009
Beiträge: 30
Bedankt: 3
|
ts2 Server stats
Hallo Leute,für ein Hosting Projekt würde ich gerne eine ts2 stats anzeige einbinden....
das der mir auf der Hosting seite anzeigt wieviele Server online sind..... z.b es sind 40server online und 320 User oder so....wie mache ich das?habe nicht so viel plan von Coden,würde mich um hilfe freuen....habe leider nur ein code der mir anzeigt ob der einzelle server online ist aber nicht so wie ich will
PHP-Code:
<?PHP
function check_ts($ip, $tcp, $udp, $timeout=1) {
$fp = fsockopen($ip, $tcp, $errno, $errstr, $timeout);
if (!$fp) {
$stat = false;
} else {
if (fgets($fp) == "[TS]\r\n") {
fputs($fp, "SEL $udp\r\n");
if (fgets($fp) == "OK\r\n") {
$stat = true;
} else {
$stat = false;
}
} else {
$stat = false;
}
if (is_resource($fp))
@fclose($fp);
return $stat;
}
}
if (check_ts("localhost", 51234, 8767)) {
echo "<FONT COLOR=#DD0000><B>ONLINE</B></FONT>";
} else {
echo "<FONT COLOR=#00DD00><B>OFFLINE</B></FONT>";
}
?>
|
|
|
19.01.12, 18:12
|
#2
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 489
Bedankt: 236
|
Du könntest den Code für jeden Server einzeln ausführen, allerdings würde das zulange dauern.
Ein Cronjob und ein Datenbankeintrag wären dafür vllt. doch besser.
|
|
|
19.01.12, 18:19
|
#3
|
Anfänger
Registriert seit: Sep 2009
Beiträge: 30
Bedankt: 3
|
ja der code zeigt ja nur das der server online ist!! ich möchte aber das auf der hp angezeigt wird....wieviele server Online sind!!
wie gesagt wir haben jetzt z.b 30 ts2 server vergeben,und auf der hp sollte dan angezeigt werden,es sind grade 30 server online
|
|
|
19.01.12, 19:31
|
#4
|
Anfänger
Registriert seit: Sep 2009
Beiträge: 30
Bedankt: 3
|
Zitat:
Zitat von KanuKkidz
Haben wir auch ohne Ausrufezeichen verstanden.
Aber WAS GENAU ist jetzt dein Problem??????
|
ich weiss leider nicht wie das geht,da ich vom coden nicht so die Ahnung habe,deswegen frage ich nach hilfe...
|
|
|
19.01.12, 20:32
|
#5
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 489
Bedankt: 236
|
Die einfachste, aber wohl schlechteste Lösung:
Du nimmst dir ein Array mit all deinen IPs.
Dann führst du den Code oben für jede einzelne IP aus, und zählst bei erfolgreicher Ausführung einen Zähler hoch.
Allerdings wird die Seite dann sehr lange laden, da er, wenn der Server offline ist, bis zu deiner angegebenen Timeout Zeit wartet.
Ist er zu hoch, wird es sehr lange dauern. Ist er zu niedrig, könnten Server als offline angezeigt werden, wenn sie es aber gar nicht sind.
Zumindest um anzuzeigen, wieviel Server online sind wird das reichen, wieviel user drauf sind, weiß ich nicht, wie man das rausbekommt
|
|
|
19.01.12, 22:22
|
#6
|
Anfänger
Registriert seit: Sep 2009
Beiträge: 30
Bedankt: 3
|
okay danke ich habs....sooo passt es
Code:
<?php
$ip = 'xxxx';
$port = 'xxxx';
function tsCheckStatus($ip, $port)
{
if(@fsockopen('udp://'.$ip, $port, $errno, $errstr, 1) === false)
{
return false;
}
return true;
}
require_once('cyts.class.php');
$ts = new cyts;
$ts->connect($ip, $port);
$info = $ts->info_serverList();
$subs_cnt = count($info);
print '<b>Ts-Server:</b><br>';
for($i = 0; $i < $subs_cnt; $i++)
{
$ts->select($info[$i]);
$subserver = $ts->info_serverInfo();
print 'Name: '.$subserver['server_name'].'<br>';
print 'Benutzer: '.$subserver['server_currentusers'].'<br>';
print 'Status: '.( tsCheckStatus($ip, $subserver['server_udpport']) ? 'Online' : 'Offline' ).'<br>';
}
$ts->disconnect();
?>
|
|
|
19.01.12, 22:57
|
#7
|
Anfänger
Registriert seit: Sep 2009
Beiträge: 30
Bedankt: 3
|
sry nochmal ne frage...habe jetzt alles so wie ich es will.....
aber sobald ein neuer server on geht wird der status Doppelt eingetragen.....
was ist falsch am code?
PHP-Code:
<?php
$ip = '11111';
$port = '11111';
function tsCheckStatus($ip, $port)
{
if(@fsockopen('udp://'.$ip, $port, $errno, $errstr, 1) === false)
{
return false;
}
return true;
}
require_once('cyts.class.php');
$ts = new cyts;
$ts->connect($ip, $port);
$info = $ts->info_serverList();
$subs_cnt = count($info);
for($i = 0; $i < $subs_cnt; $i++)
{
$ts->select($info[$i]);
$subserver = $ts->info_globalInfo();
print 'Server Online: '.$subserver['total_servers'].'<br>';
print 'User Online: '.$subserver['total_users_online'].'<br>';
}
$subserver = $ts->info_serverInfo();
print 'Status: '.( tsCheckStatus($ip, $subserver['server_udpport']) ? 'Online' : 'Offline' ).'<br>';
$ts->disconnect();
?>
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.
().
|