Changeset 197

Show
Ignore:
Timestamp:
03/31/07 04:19:48 (14 years ago)
Author:
exi
Message:

Some improvements for the battle summary, it went down from over 1500 db queries to 270 for a battle of ~55 kills.
I also improved handling of pods when people made it on a killmail with them.
The config class now writes directly into its cache during initialization, this should bring a few milliseconds.

Location:
dev/common
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • dev/common/includes/class.config.php

    r190 r197  
    9595        $db = new DBQuery(); 
    9696        $db->execute('select * from kb3_config where cfg_site=\''.KB_SITE."'"); 
     97        $config = &config::_getCache(); 
    9798        while ($row = $db->getRow()) 
    9899        { 
    99             config::put($row['cfg_key'], $row['cfg_value']); 
     100            $config[$row['cfg_key']] = $row['cfg_value']; 
    100101        } 
    101102        $config_init = true; 
  • dev/common/kill_related.php

    r194 r197  
    128128{ 
    129129    global $pilots; 
     130 
     131    // we need to get all involved pilots, killlists dont supply them 
    130132    $qry = new DBQuery(); 
    131     $sql = "select ind_plt_id, ind_crp_id, ind_all_id, ind_sec_status, 
    132             ind_shp_id, ind_wep_id 
     133    $sql = "select ind_plt_id, ind_crp_id, ind_all_id, ind_sec_status, ind_shp_id, ind_wep_id, 
     134            itm_name, plt_name, crp_name, all_name, shp_name, scl_points, scl_id, shp_externalid 
    133135            from kb3_inv_detail 
     136            left join kb3_items on ind_wep_id=itm_id 
     137            left join kb3_pilots on ind_plt_id=plt_id 
     138            left join kb3_corps on ind_crp_id=crp_id 
     139            left join kb3_alliances on ind_all_id=all_id 
     140            left join kb3_ships on ind_shp_id=shp_id 
     141            left join kb3_ship_classes on shp_class=scl_id 
    134142            where ind_kll_id = ".$kill->getID()." 
    135143            order by ind_order"; 
     
    138146    while ($row = $qry->getRow()) 
    139147    { 
    140         $ship = new Ship($row['ind_shp_id']); 
    141         $shipc = $ship->getClass(); 
     148        //$ship = new Ship($row['ind_shp_id']); 
     149        //$shipc = $ship->getClass(); 
     150 
     151        // check for npc names (copied from pilot class) 
     152        $pos = strpos($row['plt_name'], "#"); 
     153        if ($pos !== false) 
     154        { 
     155            $name = explode("#", $row['plt_name']); 
     156            $item = new Item($name[2]); 
     157            $row['plt_name'] = $item->getName(); 
     158        } 
    142159 
    143160        // dont set pods as ships for pilots we already have 
    144161        if (isset($pilots[$side][$row['ind_plt_id']])) 
    145162        { 
    146             if ($shipc->getID() == 18 || $shipc->getID() == 2) 
     163            if ($row['scl_id'] == 18 || $row['scl_id'] == 2) 
    147164            { 
    148165                continue; 
    149166            } 
    150167        } 
    151         $weapon = new Item($row['ind_wep_id']); 
    152         $pilot = new Pilot($row['ind_plt_id']); 
    153         $corp = new Corporation($row['ind_crp_id']); 
    154         $alliance = new Alliance($row['ind_all_id']); 
    155168 
    156169        // search for ships with the same id 
     
    159172            foreach ($pilots[$side][$row['ind_plt_id']] as $id => $_ship) 
    160173            { 
    161                 if ($ship->getID() == $_ship['sid']) 
     174                if ($row['ind_shp_id'] == $_ship['sid']) 
    162175                { 
    163176                    // we already got that pilot in this ship, continue 
     
    166179            } 
    167180        } 
    168         $pilots[$side][$row['ind_plt_id']][] = array('name' => $pilot->getName(), 'sid' => $ship->getID(), 
    169                'spic' => $ship->getImage(32), 'aid' => $row['ind_all_id'], 'ts' => strtotime($kill->getTimeStamp()), 
    170                'corp' => $corp->getName(), 'alliance' => $alliance->getName(), 'scl' => $shipc->getPoints(), 
    171                'ship' => $ship->getName(), 'weapon' => $weapon->getName(), 'cid' => $row['ind_crp_id']); 
     181 
     182        $shipimage = IMG_URL.'/ships/32_32/'.$row['shp_externalid'].'.png'; 
     183        $pilots[$side][$row['ind_plt_id']][] = array('name' => $row['plt_name'], 'sid' => $row['ind_shp_id'], 
     184               'spic' => $shipimage, 'aid' => $row['ind_all_id'], 'ts' => strtotime($kill->getTimeStamp()), 
     185               'corp' =>$row['crp_name'], 'alliance' => $row['all_name'], 'scl' => $row['scl_points'], 
     186               'ship' => $row['shp_name'], 'weapon' => $row['itm_name'], 'cid' => $row['ind_crp_id']); 
    172187    } 
    173188} 
     
    188203    if ($shipc->getID() == 18 || $shipc->getID() == 2) 
    189204    { 
    190         // increase the timestamp of a podkill by 1 so its for sure after the shipkill 
     205        // increase the timestamp of a podkill by 1 so its after the shipkill 
    191206        $ts++; 
    192207        global $pods; 
     
    333348    foreach ($pilot as $id => $kll) 
    334349    { 
    335         uasort($pilots[$side][$id], 'cmp_ts_func'); 
     350        usort($pilots[$side][$id], 'cmp_ts_func'); 
    336351    } 
    337352} 
     
    351366            if ($kll[$i]['ship'] == 'Capsule') 
    352367            { 
    353                 if (isset($kll[$i-1]['sid'])) 
     368                if (isset($kll[$i-1]['sid']) && isset($kll[$i]['destroyed'])) 
    354369                { 
    355370                    $pilots[$side][$id][$i-1]['podded'] = true; 
    356371                    $pilots[$side][$id][$i-1]['podid'] = $kll[$i]['kll_id']; 
    357372                    unset($pilots[$side][$id][$i]); 
     373                } 
     374                else 
     375                { 
     376                    // now sort out all pods from pilots who previously flown a real ship 
     377                    $valid_ship = false; 
     378                    foreach ($kll as $ship) 
     379                    { 
     380                        if ($ship['ship'] != 'Capsule') 
     381                        { 
     382                            $valid_ship = true; 
     383                            break; 
     384                        } 
     385                    } 
     386                    if ($valid_ship) 
     387                    { 
     388                        unset($pilots[$side][$id][$i]); 
     389                    } 
    358390                } 
    359391            }