Оптимизировать помогите

Тема в разделе "Как сделать...", создана пользователем SocMaster, 1 окт 2013.

  1. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Есть код выборки из базы
    вот функции
    Код:
    function tenthanhven($id){
        $query = DB::query("select username from ".DB::table('common_member')." where uid = $id");
        $result = DB::fetch($query);
        return $result['username'];
    }
    function iconthanhven($id){
        $query = DB::query("select groupid from ".DB::table('common_member')." where uid = $id");
        $result = DB::fetch($query);
        return $result['groupid'];
    }
    Тут использую функции
    Код:
    class plugin_online_24h_forum {
        function index_middle() {
            global $_G,$online_24h;
            $day_time = time()-date('H',time())*60*60;       
            $queryshow = DB::query("select * from ".DB::table('common_member_status')." where lastvisit > $day_time order by lastvisit DESC ");
            while($resultshow = DB::fetch($queryshow)){
            $showcount ++;
            $resultshow['username'] = tenthanhven($resultshow['uid']);
            $resultshow[lastvisit] = dgmdate($resultshow['lastvisit']);
                        $xxx = iconthanhven($resultshow['uid']);               
                        $resultshow['icon'] = isset($_G['cache']['onlinelist']["$xxx"]) ? $_G['cache']['onlinelist']["$xxx"] : $_G['cache']['onlinelist'][0];
                   
            $receiveshow[] = $resultshow;
            }
            include template('online_24h:online_24h');
            return $return;
        }
    }
    Думаю что 2 функции это много для данного кода(
    помогите оптимизировать наверное в один sql запрос
     
  2. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    PHP:
    class plugin_online_24h_forum {
       function 
    index_middle() {
         global 
    $_G,$online_24h;
         
    $showcount 0;
         
    $day_time time()-date('H',time())*60*60;
         
    $queryshow DB::query("select cms.*, cm.username, cm.groupid
                     from "
    .DB::table('common_member_status')." AS cms
                     # возможно просто join, от логики связывания зависит
                     LEFT JOIN "
    .DB::table('common_member')." AS cm ON cm.uid = cms.uid
             where lastvisit > 
    $day_time order by lastvisit DESC ");
         while(
    $resultshow DB::fetch($queryshow)){
           
    $showcount++;
           
    $resultshow['lastvisit'] = dgmdate($resultshow['lastvisit']);
           
    $xxx $resultshow['groupid'];
           unset( 
    $resultshow['groupid'] );
           
    $resultshow['icon'] = isset($_G['cache']['onlinelist']["$xxx"]) ? $_G['cache']['onlinelist']["$xxx"] : $_G['cache']['onlinelist'][0];

           
    $receiveshow[] = $resultshow;
         }
         include 
    template('online_24h:online_24h');
         return 
    $return;
       }
    }
    вообще код хреновый.. глобалы, $return в теле plugin_online_24h_forum::index_middle() не определен, переменная в sql запросе не контролируется... не гоже так..
     
    Последнее редактирование: 2 окт 2013