Добрый вечер, Гость! Представляем Вам наши форумы. Вы можете зарегистрироваться чтобы писать на форумах или зайдите под своим именем, если Вы уже регистрировались.
   
   


Форум
 CMS Koobi | Основная тема
         koobi 6

Похожие темы  |  Печать страницы

koobi 6


События Среда, 22.06.2011, 19:17

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
Оптимизируем Func.Shortstats.php
Болтается у меня досих пор пара проектов на шестерке, и частенько хостеры матерятся на эти проекты хотя там очень многое переписано.
Сегодня после очередного стука хостера, убрал немного запросов.
Есть в шестерке такая функция как shortstats() находится в файле Func.Shortstats.php, выводит она статистику на всех страницах и делает аж 13 запросов в базу

Итак ее исходный код
Спойлер
PHP-код
function shortstats()
{
    global 
$db,$THEME$lang$area;
    
$tmpl = new Koobi("templates/");
    
$gestern mktime(000date("m"), date("d")-1date("Y"));
    
$sql $db->Query("SELECT SUM(visits) as VISITSALL FROM " PREFIX "_sitestats");
    
$row $sql->fetchrow();
    
$sql $db->Query("SELECT SUM(visits) as VISITSTODAY FROM " PREFIX "_sitestats WHERE datum='" date("d-m-Y") . "'");
    
$row2 $sql->fetchrow();
    
$sql $db->Query("SELECT SUM(visits) as VISITSMONTH  FROM " PREFIX "_sitestats WHERE mesec='" date("m") . "'  AND godd='" date("Y") . "'");
    
$row3 $sql->fetchrow();
    
$sql $db->Query("SELECT MAX(visits) as VISITSMAX FROM " PREFIX "_sitestats");
    
$row4 $sql->fetchrow();
    
$sql $db->Query("SELECT SUM(visits) as VISITSGESTERN FROM " PREFIX "_sitestats WHERE tag='" date("d"$gestern) . "' AND mesec='" date("m"$gestern) . "' AND godd='" date("Y"$gestern) . "'");
    
$row5 $sql->fetchrow();

    
$sql $db->Query("SELECT SUM(hits) as HITSTODAY FROM " PREFIX "_sitestats WHERE datum='" date("d-m-Y") . "'");
    
$row6 $sql->fetchrow();
    
$sql $db->Query("SELECT SUM(hits) as HITSMONTH  FROM " PREFIX "_sitestats WHERE mesec='" date("m") . "'  AND godd='" date("Y") . "'");
    
$row7 $sql->fetchrow();
    
$sql $db->Query("SELECT MAX(hits) as HITSMAX FROM " PREFIX "_sitestats");
    
$row8 $sql->fetchrow();
    
$sql $db->Query("SELECT SUM(hits) as HITSGESTERN FROM " PREFIX "_sitestats WHERE tag='" date("d"$gestern) . "' AND mesec='" date("m"$gestern) . "' AND godd='" date("Y"$gestern) . "'");
    
$row9 $sql->fetchrow();
    
$sql $db->Query("SELECT SUM(hits) as ALLHITS FROM " PREFIX "_sitestats");
    
$row10 $sql->fetchrow();

    
$sql_members $db->Query("SELECT uid FROM " PREFIX "_user WHERE ugroup!=2 AND show_public=1 ");
    
$num_members $sql_members->numrows();
    
$sql_posts $db->Query("SELECT id FROM " PREFIX "_f_post");
    
$num_posts $sql_posts->numrows();
    
$sql_threads $db->Query("SELECT id FROM " PREFIX "_f_topic");
    
$num_threads $sql_threads->numrows();

    
$tmpl->assign('allvisits'$row->VISITSALL);
    
$tmpl->assign('visitstoday'$row2->VISITSTODAY);
    
$tmpl->assign('visitstmonth'$row3->VISITSMONTH);
    
$tmpl->assign('visitsmax'$row->VISITSALL);
    
$tmpl->assign('visityesterday'$row5->VISITSGESTERN);

    
$tmpl->assign('hitstoday'$row6->HITSTODAY);
    
$tmpl->assign('hitstmonth'$row7->HITSMONTH);
    
$tmpl->assign('hitsmax'$row8->HITSMAX);
    
$tmpl->assign('hitsyesterday'$row9->HITSGESTERN);
    
$tmpl->assign('allhits'$row10->ALLHITS);

    
$tmpl->assign('num_members'$num_members);
    
$tmpl->assign('num_posts'$num_posts);
    
$tmpl->assign('num_threads'$num_threads);

    
$tmpl->assign('lang'$lang);
    
$tmpl->assign('area'$area);
    echo 
$tmpl->fetch("$THEME/other/stats.tpl");
}

Немного ее перепишем и будет выбирать данные из базы всего за один запрос

Спойлер
PHP-код
function shortstats() {
    global 
$db,$THEME$lang$area;
    
$tmpl = new Koobi("templates/");
    
$gestern mktime(000date("m"), date("d")-1date("Y"));
    
    
$sql $db->Query("SELECT SUM(visits) AS counter FROM " PREFIX "_sitestats  
     UNION ALL 
     SELECT SUM(visits) AS counter FROM " 
PREFIX "_sitestats WHERE datum='" date("d-m-Y") . "' 
     UNION ALL 
     SELECT SUM(visits) AS counter  FROM " 
PREFIX "_sitestats WHERE mesec='" date("m") . "'  AND godd='" date("Y") . "' 
     UNION ALL 
     SELECT MAX(visits) AS counter FROM " 
PREFIX "_sitestats
     UNION ALL 
     SELECT SUM(visits) AS counter FROM " 
PREFIX "_sitestats WHERE tag='" date("d"$gestern) . "' AND mesec='" date("m"$gestern) . "' AND godd='" date("Y"$gestern) . "' 
     UNION ALL 
     SELECT SUM(hits) AS counter FROM " 
PREFIX "_sitestats WHERE datum='" date("d-m-Y") . "' 
     UNION ALL 
     SELECT SUM(hits) AS counter FROM " 
PREFIX "_sitestats WHERE mesec='" date("m") . "'  AND godd='" date("Y") . "' 
     UNION ALL 
     SELECT MAX(hits) AS counter FROM " 
PREFIX "_sitestats 
     UNION ALL 
     SELECT SUM(hits) AS counter FROM " 
PREFIX "_sitestats WHERE tag='" date("d"$gestern) . "' AND mesec='" date("m"$gestern) . "' AND godd='" date("Y"$gestern) . "' 
     UNION ALL 
     SELECT SUM(hits) AS counter FROM " 
PREFIX "_sitestats 
     UNION ALL 
     SELECT COUNT(uid) AS counter FROM " 
PREFIX "_user WHERE ugroup!=2 AND show_public=1 
     UNION ALL 
     SELECT COUNT(id) AS counter FROM " 
PREFIX "_f_post 
     UNION ALL 
     SELECT COUNT(id) AS counter FROM " 
PREFIX "_f_topic");
    
$counter = array();
    while (
$row $sql->fetchrow()) array_push($counter$row);
    
$tmpl->assign('allvisits',      $counter[0]->counter);
    
$tmpl->assign('visitstoday',    $counter[1]->counter);
    
$tmpl->assign('visitstmonth',   $counter[2]->counter);
    
$tmpl->assign('visitsmax',      $counter[3]->counter);
    
$tmpl->assign('visityesterday'$counter[4]->counter);
    
$tmpl->assign('hitstoday',      $counter[5]->counter);
    
$tmpl->assign('hitstmonth',     $counter[6]->counter);
    
$tmpl->assign('hitsmax',        $counter[7]->counter);
    
$tmpl->assign('hitsyesterday',  $counter[8]->counter);
    
$tmpl->assign('allhits',        $counter[9]->counter);
    
$tmpl->assign('num_members',    $counter[10]->counter);
    
$tmpl->assign('num_posts',      $counter[11]->counter);
    
$tmpl->assign('num_threads',    $counter[12]->counter);

    
$tmpl->assign('lang'$lang);
    
$tmpl->assign('area'$area);
    echo 
$tmpl->fetch("$THEME/other/stats.tpl");
}




Отредактировано Status-X: 22.06.2011, 19:19:03




Пользователь офлайн


Похожие темы  |  Печать страницы  |   Предыдущая тема  |   Следующая тема

Быстрый переход:  
 

 Сейчас на сайте


Пользователей: 0, Гостей: 2

Поисковые боты: 11
BingBot(4), Inktomi Slurp, Googlebot(3), Unknown Bot, Yandex(2)

 Статистика форума


  Темы Сообщения Пользователи
За сутки:
За неделю:
За месяц:
Всего:
Мы приветствуем нового участника: Lesya

 Дни рождения


Игорь Вишневский (47), borovoy.in (30), alfa-kms (28), delserf (22)
Печать | Copyright © 2009 - 2016 Status-X All rights reserved | Powered by CMS Status-X 1.05 | Контакты