Avatar billede usse Nybegynder
22. marts 2003 - 14:21 Der er 3 kommentarer og
1 løsning

Timeout til en CSserverliste

Jeg har lavet en såkaldt counter-strike serverliste.. men hvis den ene server ikke svarer, kører scriptet ikke videre, og derfor vil serverlisten ikke virke, hvis en server er ude af drift! Der er vidst nok timeout på, men der virker ikke helt. Jeg vil derfor ha lavet serverlisten sådan at hvis en server ikke svarer kører den bare videre til næste server. så serverlisten virker selvom en server er ude af dirft.
Mit script ser således ud:
<? require("counterstrike.php"); ?>
<html>
<?
#funtionen til at frembringe antal spillere og servre ialt!!!
function ialt() {
#oplysninger til databasen
$server = "localhost";
$bruger = "usse";
$kode = "mit kodeord";
$database = "csserver";
$tabel = "serverlisten";
$name = $navn;

#Opretter forbindelse til databasen:
mysql_connect("$server", "$bruger", "$kode");
mysql_select_db("$database");

#Henter tabelen ud fra databasen, for en bestemt CSSERVER:
$resultat = mysql_query("select * from $tabel") or die(mysql_error());

#Henter værdierne fra tabel af forspørgsel:
while ($row = mysql_fetch_array($resultat)){

$serveradr = $row[ip];
$serverport= $row[port];
$csinfo=new CounterStrike;
$status=$csinfo->getServerInfo($serveradr,$serverport,1000);
if ($status) {
$ialt_spillere = $ialt_spillere+$csinfo->m_servervars["currentplayers"];
$ialt_servere = $ialt_servere+$status;
}
}
echo "<tr><td><font color=#000000>";
echo "information:</font> der er ialt " . $ialt_spillere . " spillere";
echo "&nbsp;";
echo "på " . $ialt_servere . " servere";
echo "</td></tr>";
}
?>
<table border="0" id="membertabel" align="center" cellpadding="0" cellspacing="0">
<tr><td colspan=4><font color="DarkRed">*Serverlisten:</font> her er vores liste over de bedste FFA CSservere..</td></tr>
<tr><td colspan=4><? ialt(); ?></td></tr>
<tr><td id="memberhead">servernavn:</td><td id="memberhead">map:</td><td id="memberhead">spillere:</td><td id="memberhead">os:</td></tr>
<?php
#oplysninger til databasen
$server = "localhost";
$bruger = "usse";
$kode = "mit kodeord";
$database = "csserver";
$tabel = "serverlisten";
$name = $navn;

#Opretter forbindelse til databasen:
mysql_connect("$server", "$bruger", "$kode");
mysql_select_db("$database");

#Henter tabelen ud fra databasen, for en bestemt CSSERVER:
$resultat = mysql_query("select * from $tabel") or die(mysql_error());

#Henter værdierne fra tabel af forspørgsel:
while ($row = mysql_fetch_array($resultat)){

$serveradr = $row[ip];
$serverport= $row[port];
$csinfo=new CounterStrike;
$status=$csinfo->getServerInfo($serveradr,$serverport,1000);
if ($status) {

echo "<tr>";
echo "<td> " . $csinfo->m_servervars["servername"]  . " </td>";
echo "<td> " . $csinfo->m_servervars["mapname"] . " </td>";
echo "<td> " . $csinfo->m_servervars["currentplayers"] . "/".  $csinfo->m_servervars["maxplayers"]  . " </td>";
echo "<td><img src=/zerocontrol/images/$row[os].gif border=0></img></td>";
$ialt_spillere = $ialt_spillere+$csinfo->m_servervars["currentplayers"];
$ialt_servere = $ialt_servere+$status;
}
echo "</tr>";
}

mysql_close();
?>
</table>
</html>
Avatar billede ohmish Nybegynder
23. marts 2003 - 15:28 #1
ved ik om det virker i denne sammenhæng, men normalt kan man sætte et "@" foran en kommando, så stoppes der ikke ved fejl m.m..

f.eks:

@getServerInfo
Avatar billede usse Nybegynder
24. marts 2003 - 12:28 #2
det virker ikke...
Avatar billede ohmish Nybegynder
24. marts 2003 - 13:49 #3
så må du checke om der er forbindelse til hver server inden du henter info fra dem... brug evt. kommandoen fclose
Avatar billede usse Nybegynder
13. marts 2004 - 00:52 #4
Bruger QSTAT NU
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester