[PROBLEM]Serverstat. über 2 getrennte IP's?

05/15/2013 10:16 teh .PLaTiN'#1
Huhu liebe Kollegen,

da ich meinen Mysql-Server extern vom Gameserver hoste, möchte ich diese beiden Server auch getrennt in der Serverstatusonlineanzeige auf der HP anzeigen lassen.
Das Problem habe ich versucht, folgendermaßen zu lösen:
PHP Code:
<?php
        $serverip 
"*CENSORED*";
        
$serveripmysql "*CENSORED*";
        
$ip gethostbyname($serverip);
        
$ipmysql gethostbyname($serveripmysql);
        
$portlist=array(*CENSORED*, *CENSORED*, *CENSORED*);
        
$portlistmysql=array(*CENSORED*);
        &
statusmysql=array("MySQL Server:");
        
$status=array("Login Server:""Charakter Server:""World Server:");
        
$i=0;
        
$count count($status);
    
        echo 
'<table class="status" cellspacing="0">';
    foreach  (
$portlistmysql as $portmysql){
        
$online = @fsockopen($ipmysql$portmysql$errno$errstr1);
    if (!
$online)
    {
        if(
$i == 0) {
            echo 
'<tr class="first"><td width="90%">'.$statusmysql[$i].'</td><td class="offline">Offline</td></tr>';
        } else {
            echo 
'<tr><td width="90%">'.$statusmysql[$i].'</td><td class="offline">Offline</td></tr>';
        }
    }
    else
    {
        if(
$i == 0) {
            echo 
'<tr class="first"><td width="90%">'.$statusmysql[$i].'</td><td class="online">Online</td></tr>';
        } else {
            echo 
'<tr><td width="90%">'.$statusmysql[$i].'</td><td class="online">Online</td></tr>';
        }
    }
        @
fclose($online);
        
$i++;
    }
    
    foreach  (
$portlist as $port){
        
$online = @fsockopen($ip$port$errno$errstr1);
    if (!
$online)
    {
        if(
$i == 0) {
            echo 
'<tr class="first"><td width="90%">'.$status[$i].'</td><td class="offline">Offline</td></tr>';
        } else {
            echo 
'<tr><td width="90%">'.$status[$i].'</td><td class="offline">Offline</td></tr>';
        }
    }
    else
    {
        if(
$i == 0) {
            echo 
'<tr class="first"><td width="90%">'.$status[$i].'</td><td class="online">Online</td></tr>';
        } else {
            echo 
'<tr><td width="90%">'.$status[$i].'</td><td class="online">Online</td></tr>';
        }
    }
        @
fclose($online);
        
$i++;
    }

    
mysql_connect("*CENSORED*""*CENSORED*""*CENSORED*");
    
$output mysql_query("SELECT * FROM player.player WHERE DATE_SUB(NOW(),INTERVAL 5 MINUTE) < last_play;");
    
$online_count mysql_num_rows($output);
    echo 
'<tr class="last"><td width="90%">Es sind <span class="player_count">'.$online_count.'</span> Spieler online.</td><td></td></tr>'
    echo 
'</table>';
    
?>
</table>
Jedoch wird dann die Statusanzeige garnicht mehr auf der Page angezeigt, also muss dort irgendwo ein Fehler vorliegen.
Aber wo?

Danke schonmal für eure Hilfe!

vg
05/15/2013 13:08 theo1990#2
als erstes mal das:
Quote:
&statusmysql=array("MySQL Server:");
zu
Quote:
$statusmysql=array("MySQL Server:");
und du machst glaubich 2 mal die table zu

€edit: außerdem hier: @fsockopen($ip, $port, $errno, $errstr, 1);
sind erno und errstr nicht definiert wo kommen die her? oder sollen das referenzen sein denn in dem fall hättest du ein "&" vergessen

€dit2: Und ich verstehe nicht wieso $statusmysql[$i] hochszählst obwohl das array nur ein element besitzt. Du erreichst nur php fehler damit wenn er versucht auf $statusmysql[1] zuzugreifen
05/15/2013 14:03 theo1990#3
whats wrong with you boy?
05/15/2013 14:59 Spartan#117#4
Hi!

ZU ALLER ERST: Entferne die MySQL-Daten in deinem Code-Snippet bei der Ausgabe wieviele Spieler online sind!
(Ich habe die Daten getestet und kam rein :o)

Ich habe hier ein etwas vereinfachtes Script für dich erstellt, welches jedoch genau das selbe macht wie deins:
PHP Code:
<?php
# Hier alle Cores angeben die angezeigt werden sollen
$statusTable = array(
    array(
'Datenbank''0.0.0.0''3306'),
    array(
'Auth''0.0.0.0''11002'),
    array(
'Channel 1''0.0.0.0''13000'),
    array(
'Game99''0.0.0.0''13099'),
);
echo 
'<table class="status" cellspacing="0">';
$i 0;
foreach(
$statusTable as $status) {
    
$online = @fsockopen($status[1], $status[2], $errno$errstr1);
    if(!
$online) {
        if(
$i == 0) {
            echo 
'<tr class="first"><td width="90%">'.$status[0].'</td><td class="offline">Offline</td></tr>';
        }
        else {
            echo 
'<tr><td width="90%">'.$status[0].'</td><td class="offline">Offline</td></tr>';
        }
    }
    else
    {
        if(
$i == 0) {
            echo 
'<tr class="first"><td width="90%">'.$status[0].'</td><td class="online">Online</td></tr>';
        }
        else {
            echo 
'<tr><td width="90%">'.$status[0].'</td><td class="online">Online</td></tr>';
        }
    }
    @
fclose($online);
    
$i++;
}
mysql_connect("0.0.0.0""ZERNSIERT""ZENSIERT");
$output mysql_query("SELECT * FROM player.player WHERE DATE_SUB(NOW(),INTERVAL 5 MINUTE) < last_play;");
$online_count mysql_num_rows($output);
echo 
'<tr class="last"><td width="90%">Es sind <span class="player_count">'.$online_count.'</span> Spieler online.</td><td></td></tr>'
echo 
'</table>';
?>
</table>
Du brauchst nur das erste Array zu ändern.
Der Code ist ungetestet, sollte jedoch funktionieren.

Spartan#117
05/15/2013 18:27 teh .PLaTiN'#5
Danke!
Aber nun darf ich erstmal meinen V-Server neu aufsetzen, da tatsächlich irgendein Vollhorst meinte, sich in meine DB einzuloggen und dort alles zu löschen.

Thanks for that!

#closerequest
05/15/2013 18:57 IchVerabschiedeMich#6
Quote:
Originally Posted by teh .PLaTiN' View Post
Danke!
Aber nun darf ich erstmal meinen V-Server neu aufsetzen, da tatsächlich irgendein Vollhorst meinte, sich in meine DB einzuloggen und dort alles zu löschen.

Thanks for that!

#closerequest
Wenn man so BESCHEUERT ist und seine Daten Preisgibt?
05/16/2013 01:27 teh .PLaTiN'#7
Was willst du? Mir ist ein dummer Fehler unterlaufen, aber die Community war schon immer so unterbelichtet und nutzt das gleich aus. Darunter zählst wohl auch du. :facepalm:
--> Kopp zu machen und vorher überlegen was man schreibt, Dude!
05/16/2013 08:10 theo1990#8
ich finds auch scheiße demjenigen gehört der pc geschrottet vorallem weils ihm auch wirklich was gebracht hat...warscheinlich erzählt er jetzt seinen freunden dass er eine db "gehackt" hat...hier gibt es einfach zu viele i....