Кешированные блоки онлайн и статистика - Форум вебмастеров-Моды и хаки для трекера
Страница 1 из 11
Форум вебмастеров-Моды и хаки для трекера » Моды и Хаки » Готовые моды и хаки » Кешированные блоки онлайн и статистика (Кешированные блоки онлайн и статистика)
Кешированные блоки онлайн и статистика
InDiGoДата: Пятница, 02.07.2010, 18:43 | Сообщение # 1
Administrator
Группа: Администраторы
Сообщений: 21
Репутация: 4
Статус: Offline
В functions.php после:
Code
function mysql_modified_rows () {
$info_str = mysql_info();
$a_rows = mysql_affected_rows();
preg_match("/Rows matched: ([0-9]*)/", $info_str, $r_matched);
return ($a_rows < 1)?($r_matched[1]?$r_matched[1]:0):$a_rows;

Добавить строки:
Code
}

function cache_check($file, $time) {
global $rootpath;
return file_exists("cache/$file.cache") && is_readable("cache/$file.cache") && (TIMENOW - $time < filemtime("cache/$file.cache")) && filesize("cache/$file.cache") > 0 && $_GET["no_cache"] != 1;
}

function cache_read($file) {
global $rootpath;
return unserialize(@file_get_contents("cache/$file.cache"));
}

function cache_write($file, $data) {
global $rootpath;
if (file_exists("cache/$file.cache")) {
if (is_writable("cache/$file.cache"))
@file_put_contents("cache/$file.cache", serialize($data));}
else
{
$fh = fopen("cache/$file.cache",'w+');
fwrite($fh,serialize($data));
fclose($fh);
}
}

function cache_left($file, $time) {
global $rootpath;
return $time - (TIMENOW - filemtime($rootpath . "cache/$file.cache"));
}

В корне трекера создать папку cache (если на фтп хостинга залит трекер то поставить на папку chmod 777)

Блок Онлайн:

Code
<?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}

global $CURUSER, $use_sessions;
if (cache_check("online", 300) && cache_check("latest", 300) && cache_check("how", 300)) {
$result = cache_read("online");
$a = cache_read("latest");
$how = cache_read("how");
} else {
$a = mysql_fetch_array(sql_query("SELECT id, username FROM users WHERE status='confirmed' ORDER BY id DESC LIMIT 1"));

if ($CURUSER)
$latestuser = "<a href=userdetails.php?id=" . $a["id"] . " class=\"online\">" . $a["username"] . "</a>";
else
$latestuser = $a['username'];

$title_who = array();

$dt = sqlesc(time() - 300);

if ($use_sessions)
$result = sql_query("SELECT DISTINCT s.uid, s.username, s.class, s.ip FROM sessions AS s WHERE s.time > $dt ORDER BY s.class DESC");
else
$result = sql_query("SELECT u.id, u.username, u.class FROM users AS u WHERE u.last_access > ".sqlesc(get_date_time(time() - 300))." GROUP BY u.username ORDER BY u.class DESC");

$online_cache = array();
while ($cache_data = mysql_fetch_array($result))
$online_cache[] = $cache_data;

cache_write("online", $online_cache);
cache_write("latest", $a);
$result = $online_cache;
}

foreach ($result as $arr) {
list($uid, $uname, $class) = $arr;

if (!empty($uname)) {
$title_who[] = "<a href=\"userdetails.php?id=".$uid."\" class=\"online\">".get_user_class_color($class, $uname)."</a>";
}

if ($class == UC_SYSOP) {
$staff++;
} elseif (empty($uname)) {
$guests++;
} elseif ($class == UC_USER) {
$users++;
} elseif ($class == UC_ADMINISTRATOR){
$admin++;
} elseif ($class == UC_MODERATOR) {
$moder++;
} elseif ($class == UC_VIP) {
$vip++;
} elseif ($class == UC_UPLOADER) {
$upload++;
}

$total++;

if (empty($uname))
continue;
else
$who_online .= $title_who;

}

if ($staff == "") $staff = 0;
if ($admin == "") $admin = 0;
if ($moder == "") $moder = 0;
if ($vip == "") $vip = 0;
if ($upload == "") $upload = 0;
if ($guests == "") $guests = 0;
if ($users == "") $users = 0;
if ($total == "") $total = 0;

$content .= "<script language=\"javascript\" type=\"text/javascript\" src=\"js/show_hide.js\"></script>";
$content .= "<table border=\"0\" width=\"100%\"><tr valign=\"middle\"><td align=\"left\" class=\"embedded\"><b>Последний пользователь: </b> $latestuser<hr></td></tr></table>\n";

if (count($title_who)) {
$content .= "<table border=\"0\" width=\"100%\"><tr valign=\"middle\"><td align=\"left\" class=\"embedded\"><b>Кто онлайн: </b></td></tr><tr><td class=\"embedded\">".@implode(", ", $title_who)."<hr></td></tr></table>\n";
} else {
$content .= "<table border=\"0\" width=\"100%\"><tr valign=\"middle\"><td align=\"left\" class=\"embedded\"><b>Кто онлайн: </b>Нет пользователей за последние 10 минут.<hr></td></tr></table>\n";
}

$content .= "<table border=\"0\" width=\"100%\"><tr valign=\"middle\"><td colspan=\"2\" align=\"left\" class=\"embedded\"><b>В сети: </b></td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/sysop.gif\"></td><td width=\"90%\" class=\"embedded\"><font color=\"#0F6CEE\">Директоров:</font> $staff</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/admin.gif\"></td><td width=\"90%\" class=\"embedded\"><font color=\"green\">Администраторов:</font> $admin</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/moder.gif\"></td><td width=\"90%\" class=\"embedded\"><font color=\"red\">Модераторов:</font> $moder</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/vip.gif\"></td><td width=\"90%\" class=\"embedded\"><font color=\"#9C2FE0\">Vip'ов:</font> $vip</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/uploader.gif\"></td><td width=\"90%\" class=\"embedded\"><font color=\"orange\">Аплоадеров:</font> $upload</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/member.gif\"></td><td width=\"90%\" class=\"embedded\"><font color=\"#306A82\">Пользователей: $users</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/guest.gif\"></td><td width=\"90%\" class=\"embedded\">Гостей: $guests</td></tr>\n";
$content .= "<tr><td class=\"embedded\"><img src=\"pic/info/group.gif\"></td><td width=\"90%\" class=\"embedded\">Всего: $total</td></tr></table>\n";

?>

Блок статистика:

Code
<?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}

global $tracker_lang, $ss_uri, $maxusers;

if (!cache_check('stats', 300)) {

$registered = number_format(get_row_count("users"));
$unverified = number_format(get_row_count("users", "WHERE status='pending'"));
$male = number_format(get_row_count("users", "WHERE gender='1'"));
$female = number_format(get_row_count("users", "WHERE gender='2'"));
$torrents = number_format(get_row_count("torrents"));
$dead = number_format(get_row_count("torrents", "WHERE visible='no'"));
$seeders = get_row_count("peers", "WHERE seeder='yes'");
$leechers = get_row_count("peers", "WHERE seeder='no'");
$warned_users = number_format(get_row_count("users", "WHERE warned = 'yes'"));
$disabled = number_format(get_row_count("users", "WHERE enabled = 'no'"));
$uploaders = number_format(get_row_count("users", "WHERE class = ".UC_UPLOADER));
$vip = number_format(get_row_count("users", "WHERE class = ".UC_VIP));
if ($leechers == 0)
$ratio = 0;
else
$ratio = round($seeders / $leechers * 100);
$peers = number_format($seeders + $leechers);
$seeders = number_format($seeders);
$leechers = number_format($leechers);

$content .= "<table width=\"100%\" class=\"main\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><td align=\"center\">
<table class=\"main\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\">

<table width=\"100%\" class=\"main\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\">
<tr>
<td width=\"50%\" align=\"center\" style=\"border: none;\"><table class=\"main\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\">
<tr><td class=\"rowhead\">".$tracker_lang['users_registered']."</td><td align=right><img src=\"pic/male.gif\" alt=\"Парни\">$male<img src=\"pic/female.gif\" alt=\"Девушки\">$female<br />".$tracker_lang['total'].": $registered</td></tr>
<tr><td colspan=\"2\" class=\"rowhead\"><table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\"><tr><td style=\"text-align: right; font-weight: bold; vertical-align: top;\">Мест на трекере</td><td align=\"right\">$maxusers</td></tr></table></td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['users_unconfirmed']."</td><td align=right>$unverified</td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['users_warned']." <img src=\"pic/warned.gif\" border=0 align=absbottom></td><td align=right>$warned_users</td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['users_disabled']." <img src=\"pic/disabled.gif\" border=0 align=absbottom></td><td align=right>$disabled</td></tr>
<tr><td class=\"rowhead\"><font color=\"orange\">".$tracker_lang['users_uploaders']."</font></td><td align=right>$uploaders</td></tr>
<tr><td class=\"rowhead\"><font color=\"#9C2FE0\">".$tracker_lang['users_vips']."</font></td><td align=right>$vip</td></tr>

</table></td>
<td width=\"50%\" align=\"center\" style=\"border: none;\"><table class=main border=1 cellspacing=0 cellpadding=5>
<tr><td class=\"rowhead\">".$tracker_lang['tracker_torrents']."</td><td align=right>$torrents</td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['tracker_dead_torrents']."</td><td align=right>$dead</td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['tracker_peers']."</td><td align=right>$peers</td></tr>";
if (isset($peers)) {
$content .= "<tr><td class=\"rowhead\">".$tracker_lang['tracker_seeders']."  <img src=\"./themes/$ss_uri/images/arrowup.gif\" border=0 align=absbottom></td><td align=right>$seeders</td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['tracker_leechers']."  <img src=\"./themes/$ss_uri/images/arrowdown.gif\" border=0 align=absbottom></td><td align=right>$leechers</td></tr>
<tr><td class=\"rowhead\">".$tracker_lang['tracker_seed_peer']."</td><td align=right>$ratio</td></tr>";
}

$content .= "</table></td>

</table>
</td></tr></table>";
cache_write('stats', $content);
} else
$content = cache_read('stats');
?>

разархивировать папку инфо в директорию pic
Прикрепления: info.rar(5Kb)


я бы изменил мир, но бог не даёт исходники
 
KYZMINOVДата: Четверг, 15.07.2010, 17:08 | Сообщение # 2
Рядовой
Группа: Проверенные
Сообщений: 7
Репутация: 0
Статус: Offline
спасибо, всё работает, у меня с 36 запросов упало до 26-28.

 
Форум вебмастеров-Моды и хаки для трекера » Моды и Хаки » Готовые моды и хаки » Кешированные блоки онлайн и статистика (Кешированные блоки онлайн и статистика)
Страница 1 из 11
Поиск: