Avatar billede rippie Nybegynder
11. marts 2003 - 21:32 Der er 9 kommentarer og
1 løsning

Ideer til omkodning af CS server liste.

Heey gutter...


Jeg har lige brug for nogle ideer til en anden måde at kode mit cs server liste script på.

Jeg bruger scriptet på www.gameserver.dk (CS SERVER) hvor jeg så¨istedet for at der kun vises en server smider jeg ip og port ind i en mysql og henter dem ud fra der. jeg har nu 50 iper og porte men den viser kun 35 og det er pga. PHP execution time. det tager for lang tid at udføre scriptet. Jeg ved at stivan.dk har lavet det anderledes så de kan have MANGE flere servere... deres er i ASP så kan ikke få hjælp derfra.

Er der nogen som har en ide til en omkodning så jeg kan vise alle mine 50 servere ??

i kan se min side herpå : http://www.lanworld.dk/index.php?menu=serverlist

På Forhånd tak.
Avatar billede tefcke Nybegynder
12. marts 2003 - 00:41 #1
indsæt disse linier i toppen af den fil som du risikerer at tage længerer tid end PHP's max_execution_time:

<snip>
  if (ini_get("max_execution_time")!=0) {
    ini_set("max_execution_time", "0");
  }
</snip>

Den sætter max_execution_time til uendeligt!
Avatar billede tefcke Nybegynder
12. marts 2003 - 00:43 #2
Der er lige en lille fodnote jeg vil tilføje angående ini_set():

"The configuration option will keep this new value during the script's execution, and will be restored at the script's ending."
Avatar billede rippie Nybegynder
12. marts 2003 - 16:13 #3
Det skal være inden imellem <? og ?> ikke ????? og har skrevet det således... er det korrekt ?

<?
echo "<snip>";
  if (ini_get("max_execution_time")!=0) {
    ini_set("max_execution_time", "0");
  }
echo "</snip>";

?>
Avatar billede tefcke Nybegynder
12. marts 2003 - 17:19 #4
hehe, <snip> og </snip> er min psudo kode for php script begynd og slut :P

det er klart at du skal skrive <??> uden om det, altså:
<?
if (ini_get("max_execution_time")!=0) {
  ini_set("max_execution_time", "0");
}
?>
Avatar billede rippie Nybegynder
12. marts 2003 - 17:37 #5
Hmmm nu har jeg prøvet at smide den op i toppen af den side jeg includer, og den viser igen kun de der 35-36 servere... så tog jeg og smed den op i index.php men den viser det stadig... kan der være noget galt ?
Avatar billede tefcke Nybegynder
12. marts 2003 - 17:46 #6
Jeg bruger selv de to linier i et scriptet som henter over 300 forskellige sider på nettet, og parser deres indhold, så jeg er rimlig sikker på de virker, da det tager over 5 min :)

Det kan være du lige skulle kigge dit script igennem en ekstra gang for fejl, eller smide det her, så skal jeg nok lige kigge på det!
Avatar billede rippie Nybegynder
12. marts 2003 - 18:30 #7
Det kommer her.... det er siden jeg includer i en anden fil (index.php) og har undladt de html tags *s*

<?

  if (ini_get("max_execution_time")!=0) {
    ini_set("max_execution_time", "0");
  }

$var =0;

$result = mysql_query("SELECT * FROM cs_server_liste") or die (mysql_error());
while ($row = mysql_fetch_array($result)) {


  $serveradr=$row[serveradr];
  $serverport=$row[serverport];
  $csinfo=new CounterStrike;

  $status=$csinfo->getServerInfo($serveradr,$serverport,1000);

$servernavn = $csinfo->m_servervars['servername'];
$currentplayers = $csinfo->m_servervars['currentplayers'];
$maxplayers = $csinfo->m_servervars['maxplayers'];
$map = $csinfo->m_servervars['mapname'];
$os = $csinfo->m_servervars['sv_os'];


if($status) {

    echo "<tr>";
      echo "<td width='10'>&nbsp;</td>";
      echo "<td width='275'>".substr($servernavn,0,37)."</td>";
      echo "<td width='70'>$map</td>";
      echo "<td width='60' height='17' align='center'>$currentplayers / $maxplayers</td>";
      echo "<td width='60' align='center'><a href='index.php?link=csstatus&server=$row[id]' target='_self'>Vis</a> / <a href='halflife:$serveradr:$serverport'>Spil</a></td>";
    echo "</tr>";

$spillerenu[] = $currentplayers;

$spillereialt = array_sum($spillerenu);

$var++;


}


}

?>
Avatar billede tefcke Nybegynder
12. marts 2003 - 20:10 #8
Hmmnår jeg går ind på http://www.lanworld.dk/index.php?menu=serverlist får jeg ikke en execution timeout, så den kommer alle dine server igennem, og får afsluttet scriptet ordentligt.

Jeg tror dit "problem" er her:
if($status) {
  bla;
  bla;
}

ifølge 'Henrik Schack Jens' og hans counterstrike class:
    // **********************************************************************
    // getServerinfo
    // Read information about the gameserver into m_servervars
    // Serveraddress,servername,current map etc etc
    // Return true if successful
    // **********************************************************************

--> Return true if successful <--
og hvis der gik noget galt returnere den false.


Prøv at lave et lille testscript som skriver den navnet ud på den server ud er ved at checke, samt retur værdien af getServerInfo();

Noget lign:
<?
$result = mysql_query("SELECT * FROM cs_server_liste") or die (mysql_error());
while ($row = mysql_fetch_array($result)) {

  $serveradr  = $row[serveradr];
  $serverport = $row[serverport];
  $csinfo    = new CounterStrike;

  $status = $csinfo->getServerInfo($serveradr,$serverport,1000);

  print(substr($servernavn,0,37));
  if($status) {
      print(" : OK!<br />");
  else {
      print(" : FAILED!<br />");
  }

}
?>
Avatar billede c-pr4xx Nybegynder
20. marts 2003 - 09:07 #9
jeg har kigget lidt på dette script som Rippie har sat ind..
men med min siger den fejl med denne linie:
$result = mysql_query("SELECT * FROM cs_server_liste") or die (mysql_error());

er det den jeg ska få connectet til min MySQL?..
eller..
Avatar billede RJFreelance Praktikant
07. juli 2003 - 23:24 #10
mangler du stadig hjælp ??
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