myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   ts2 Server stats (https://mygully.com/showthread.php?t=2552795)

fler23 19.01.12 11:10

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"512348767)) { 
echo 
"<FONT COLOR=#DD0000><B>ONLINE</B></FONT>";
} else {
echo 
"<FONT COLOR=#00DD00><B>OFFLINE</B></FONT>";
}
?>


Thelvan 19.01.12 18:12

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.

fler23 19.01.12 18:19

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

fler23 19.01.12 19:31

Zitat:

Zitat von KanuKkidz (Beitrag 23200006)
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...

Thelvan 19.01.12 20:32

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

fler23 19.01.12 22:22

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();

?>


fler23 19.01.12 22:57

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$errstr1) === 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(); 

 
?>



Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.