Кеширование статистики пользователя (альтернатива)

Started by Dream on 2013-02-23 15:24 — 24 replies, 4146 views

#1
Автор: Dream
Установка: 2 мин.
Описание: Мод кеширует статистику пользователя на главной странице + добавляет количество сидируемых, скачиваемых раздач юзера.
Установка:

Spoiler content hidden.
#2
УстАновка:
Поправь)
#3
упс, точно это спешка) спасиб
#4
Dream, добавляет количество сидируемых, скачиваемых раздач юзера. Это по моему лишнее
#5
Захожу в разные профили и у всех показывает мои данные.
#6
Ragnar, правильно. Надо делать новую фуньку. А на добавлять к старой. Тогда будет все ок.
#7
drew, заменил фуньки.
#8
drew, та не, не надо отдельная фунька. сделает кеш для каждого юзера и все. просто в моде один кеш на всех, а надо на каждого юзера свой. спешил наверно, старался
#9
Берешь
function show_bt_userdata_header ($user_id)
{
    global $lang;
 
    $btu = get_bt_userdata($user_id);
 
    if (!$row = CACHE('bb_cache')->get('row'))
    {
        $row = DB()->fetch_row("
            SELECT COUNT(tor.user_id) AS all_count,
                    SUM(tor.seeder) AS seeding, tor.topic_id,
                    SUM(tor.releaser) AS releasing, tor.user_id, u.user_id
            FROM ". BB_USERS ." u, ". BB_BT_TRACKER . " tor
            WHERE tor.user_id = u.user_id
            AND tor.user_id = ". $user_id ."
        ");
        CACHE('bb_cache')->set('row', $row, 300);
    }
 
    $seeding = $row['seeding'] - $row['releasing'];
    if ($seeding < 0)
    {
        $seeding = 0;
    }
    $leeching = $row['all_count'] - $row['seeding'];
 
    $GLOBALS['template']->assign_vars(array(
        'SHOW_BT_USERDATA' => true,
        'UP_TOTAL'        => humn_size($btu['u_up_total']),
        'UP_BONUS'        => humn_size($btu['u_up_bonus']),
        'RELEASED'        => humn_size($btu['u_up_release']),
        'DOWN_TOTAL'      => humn_size($btu['u_down_total']),
        'DOWN_TOTAL_BYTES' => $btu['u_down_total'],
        'USER_RATIO'      => get_bt_ratio($btu),
        'MIN_DL_FOR_RATIO' => humn_size(MIN_DL_FOR_RATIO),
        'MIN_DL_BYTES'    => MIN_DL_FOR_RATIO,
        'AUTH_KEY'        => ($btu['auth_key']) ? $btu['auth_key'] : $lang['NONE'],
 
        'TD_DL'            => humn_size($btu['down_today']),
        'TD_UL'            => humn_size($btu['up_today']),
        'TD_REL'          => humn_size($btu['up_release_today']),
        'TD_BONUS'        => humn_size($btu['up_bonus_today']),
        'TD_POINTS'        => ($btu['auth_key']) ? $btu['points_today'] : '0.00',
 
        'YS_DL'            => humn_size($btu['down_yesterday']),
        'YS_UL'            => humn_size($btu['up_yesterday']),
        'YS_REL'          => humn_size($btu['up_release_yesterday']),
        'YS_BONUS'        => humn_size($btu['up_bonus_yesterday']),
        'YS_POINTS'        => ($btu['auth_key']) ? $btu['points_yesterday'] : '0.00',
 
        'SPEED_UP'        => humn_size($btu['speed_up'], 0, 'KB') .'/s',
        'SPEED_DOWN'      => humn_size($btu['speed_down'], 0, 'KB') .'/s',
 
        'RELEASING'        => $row['releasing'] ? $row['releasing'] : 0,
        'SEEDING'          => $seeding ? $seeding : 0,
        'LEECHING'        => $leeching ? $leeching : 0,
    ));
}
А вывод уже сам сделаешь .
#10
drew, зачем отдельная фунька? используй ту, которая уже есть
CACHE('bb_cache')->set('row', $row, 300);
грубо говоря поменяй на:
CACHE('bb_cache')->set('row_'. $user_id, $row, 300);
ну и само собой другой вывод.

получаешь на каждого юзера свой кеш без дополнительных функций. Причем в твоем коде те же грабли, один кеш на всех