Changeset 6


Ignore:
Timestamp:
Jun 4, 2008, 9:01:09 AM (17 years ago)
Author:
george
Message:

Upraveno: Změna systému sledování procentuálního online stavu. Přidána tabulka servers_online pro uchování stavu serveru za poslední definovanou periodu. Dosavadní systém počítal online stav od počáteční registrace daného serveru což je nevyhovující a zavádějící.

Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • pages/a_servers.php

    r3 r6  
    1010switch ($order_index)
    1111  {
    12   case 0: $order = ' order by `name` desc '; break;
     12  case 0: $order = ' order by `name`'; break;
    1313  case 1: $order = ' order by `rating` desc '; break;
    1414  case 2: $order = ' order by `version` desc '; break;
     
    3434  }
    3535 
    36 $pa = new CleverPager('select `id`,`wss_partner`,LEFT(`name`, 25) as `name`, `place`, `rating_sum`/`ratings` as `rating`, `version`, `type`, `xp`, `online`/`online_checks` as `online`, `online_players_sum`/`player_checks` as `players` from `servers` where `place`=2 '.$order, 'p');
     36$pa = new CleverPager('select `id`,`wss_partner`,LEFT(`name`, 25) as `name`, `place`, `rating_sum`/`ratings` as `rating`, `version`, `type`, `xp`, `online`, `online_players_sum`/`player_checks` as `players` from `servers` where `place`=2 '.$order, 'p');
    3737$pa->PageSize = 20;
    3838$pa->PageLinksDisplayed = 5;
     
    6666  $tpl->output['servers_data'] .='<td>'.$xp.'</td>';
    6767  $tpl->output['servers_data'] .='<td>'.(int)$row['players'].'</td>';
    68   $tpl->output['servers_data'] .='<td>'.(100*$row['online']).'%</td>';
     68  $tpl->output['servers_data'] .='<td>'.($row['online']).'%</td>';
    6969  $tpl->output['servers_data'] .='</tr>';
    7070  }
  • pages/server.php

    r1 r6  
    3030  $tpl->output['server_online_players']='0';
    3131  }
    32 $tpl->output['server_online'] = 100*@round($server_info['online']/$server_info['online_checks'],2).'%';
     32$tpl->output['server_online'] = @round($server_info['online'], 2).'%';
    3333switch ($server_info['xp'])
    3434  {
  • pages/servers.php

    r3 r6  
    99switch ($order_index)
    1010{
    11   case 0: $order = ' order by `name` desc '; break;
     11  case 0: $order = ' order by `name`'; break;
    1212  case 1: $order = ' order by `rating` desc '; break;
    1313  case 2: $order = ' order by `version` desc '; break;
     
    3333}
    3434 
    35 $pa = new CleverPager('select `id`,`wss_partner`, LEFT(`name`, 25) as `name`, `place`, `rating_sum`/`ratings` as `rating`, `version`, `type`, `xp`, `online`/`online_checks` as `online`, `online_players_sum`/`player_checks` as `players` from `servers` where `place`=1 '.$order, 'p');
     35$pa = new CleverPager('select `id`,`wss_partner`, LEFT(`name`, 25) as `name`, `place`, `rating_sum`/`ratings` as `rating`, `version`, `type`, `xp`, `online`, `online_players_sum`/`player_checks` as `players` from `servers` where `place`=1 '.$order, 'p');
    3636$pa->PageSize = $Config['DisplayServerCountPerPage'];
    3737$pa->PageLinksDisplayed = 5;
     
    6565  $tpl->output['servers_data'] .='<td>'.$xp.'</td>';
    6666  $tpl->output['servers_data'] .='<td>'.(int)$row['players'].'</td>';
    67   $tpl->output['servers_data'] .='<td>'.(100*$row['online']).'%</td>';
     67  $tpl->output['servers_data'] .='<td>'.$row['online'].'%</td>';
    6868  $tpl->output['servers_data'] .='</tr>';
    6969  }
  • pages/wss_partners.php

    r3 r6  
    55$tpl->output['place'] = $text['info_place'];
    66$tpl->output['wss_partners_h2'] = $menu['mm2'];
     7if(!array_key_exists('order', $_GET)) $_GET['order'] = 0;
    78$order_index = (int) $_GET['order'];
    89switch ($order_index)
    910  {
    10   case 0: $order = ' order by `name` desc '; break;
     11  case 0: $order = ' order by `name`'; break;
    1112  case 1: $order = ' order by `rating` desc '; break;
    1213  case 2: $order = ' order by `version` desc '; break;
     
    3233  }
    3334 
    34 $pa = new CleverPager('select `id`,`wss_partner`, LEFT(`name`, 25) as `name`, `place`, `rating_sum`/`ratings` as `rating`, `version`, `type`, `xp`, `online`/`online_checks` as `online`, `online_players_sum`/`player_checks` as `players` from `servers` where `wss_partner`=1 '.$order, 'p');
     35$pa = new CleverPager('select `id`,`wss_partner`, LEFT(`name`, 25) as `name`, `place`, `rating_sum`/`ratings` as `rating`, `version`, `type`, `xp`, `online`, `online_players_sum`/`player_checks` as `players` from `servers` where `wss_partner`=1 '.$order, 'p');
    3536$pa->PageSize = 20;
    3637$pa->PageLinksDisplayed = 5;
     
    6465  $tpl->output['servers_data'] .='<td>'.$xp.'</td>';
    6566  $tpl->output['servers_data'] .='<td>'.(int)$row['players'].'</td>';
    66   $tpl->output['servers_data'] .='<td>'.(100*$row['online']).'%</td>';
     67  $tpl->output['servers_data'] .='<td>'.$row['online'].'%</td>';
    6768  $tpl->output['servers_data'] .='</tr>';
    6869  }
  • scripts/check.php

    r3 r6  
    11<?php
     2/*
    23require ('../includes/config.php');
    34$db = new tMySql;
     
    89$db->connect();
    910
    10 $db->query('del', 'select `id`, `created` from `servers` where (`online`/`online_checks`) < 0.8');
     11$db->query('del', 'select `id`, `created` from `servers` where (`online`) < 0.8');
    1112while ($row = $db->fetch_assoc('del'))
    1213{
     
    1617  }
    1718}
     19*/
     20
    1821?>
  • scripts/online.php

    r5 r6  
    33require ('../includes/config.php');
    44
    5 mysql_connect($db_config['host'], $db_config['user'], $db_config['pass']);
    6 mysql_select_db($db_config['name']);
     5$Database = new mysqli($db_config['host'], $db_config['user'], $db_config['pass']);
     6$Database->select_db($db_config['name']);
    77
    88function CheckPortStatus($Ip, $Port)
     
    1212  {
    1313    fclose($Socket);
    14     return(true);
     14    return(1);
    1515  } else
    1616  {
    17     return(false);
     17    return(0);
    1818  }
    1919}
    2020
     21$TextState = array('Offline', 'Online');
     22
    2123echo("Kontroluji stav serveru...<br>\n");
     24$PlayersCount = 0;
    2225$OnlineCount = 0;
    2326$OfflineCount = 0;
    24 $Servers = mysql_query("SELECT `id`,`ip`,`port`,`name` FROM `servers`");
    25 while($Server = mysql_fetch_array($Servers))
     27$Servers = $Database->query("SELECT `id`,`ip`,`port`,`name` FROM `servers`");
     28while($Server = $Servers->fetch_array())
    2629{
    2730  echo($Server['name'].' - ');
    28   if(CheckPortStatus($Server['ip'], $Server['port']))
    29   {
    30     mysql_query("UPDATE `servers` SET `online_checks` = `online_checks` + 1, `online` = `online` + 1 WHERE `id`=".$Server['id']);
    31     echo('Online');
    32     $OnlineCount++;
    33   } else
    34   {
    35     mysql_query("UPDATE `servers` SET `online_checks` = `online_checks` + 1 WHERE `id` =".$Server['id']);
    36     echo('Offline');
    37     $OfflineCount++;
    38   }
    39   echo("<br>\n");
     31  $OnlineState = CheckPortStatus($Server['ip'], $Server['port']);
     32  $OnlineCount += $OnlineState;
     33  $OfflineCount += 1 - $OnlineState;
     34  // Insert new online state
     35  $Database->query("INSERT INTO `servers_online` (`server` ,`time` ,`state` ,`players_count`) VALUES (".$Server['id'].", NOW() , ".$OnlineState.", ".$PlayersCount.")");
     36
     37  // Delete old records
     38  $Database->query("DELETE FROM `servers_online` WHERE `server` = ".$Server['id']." AND time < DATE_SUB(NOW(), INTERVAL 1 DAY)");
     39 
     40  // Calculate cached percentage online state
     41  $DbResult = $Database->query("SELECT COUNT(*) as `count`, SUM(`state`) as `online` FROM `servers_online` WHERE `server` = ".$Server['id']);
     42  $DbRow = $DbResult->fetch_array();
     43  $Database->query("UPDATE `servers` SET `online` = ".round($DbRow['online'] / $DbRow['count'] * 100, 2)." WHERE `id` = ".$Server['id']);
     44  $DbResult->free();
     45  echo($TextState[$OnlineState]."<br>\n");
     46  flush();
    4047}
    41 mysql_free_result($Servers);
     48$Servers->free();
    4249
    4350echo('Total: '.($OnlineCount + $OfflineCount).', Online: '.$OnlineCount.', Offline: '.$OfflineCount."<br>\n");
Note: See TracChangeset for help on using the changeset viewer.