session_start(); if (!IS_ADMIN) bb_die($lang['NOT_AUTHORISED']); $peers_in_last_minutes = array(30, 15, 5, 1); $peers_in_last_sec_limit = 300; $announce_interval = intval($bb_cfg['announce_interval']); $stat = array(); define('TMP_TRACKER_TABLE', 'tmp_tracker'); DB()->query(" CREATE TEMPORARY TABLE ". TMP_TRACKER_TABLE ." ( `topic_id` mediumint(8) unsigned NOT NULL default '0', `user_id` mediumint(9) NOT NULL default '0', `ip` char(8) binary NOT NULL default '0', `seeder` tinyint(1) NOT NULL default '0', `speed_up` mediumint(8) unsigned NOT NULL default '0', `speed_down` mediumint(8) unsigned NOT NULL default '0', `update_time` int(11) NOT NULL default '0' ) SELECT topic_id, user_id, ip, seeder, speed_up, speed_down, update_time FROM ". BB_BT_TRACKER ." "); // Peers within announce interval $stat += DB()->fetch_row("SELECT COUNT(*) AS p_within_ann FROM ". TMP_TRACKER_TABLE ." WHERE update_time >= ". (TIMENOW - $announce_interval)); // All peers, "max_peer_time" $stat += DB()->fetch_row("SELECT COUNT(*) AS p_all, SUM(speed_up) as speed_up, SUM(speed_down) as speed_down, UNIX_TIMESTAMP() - MIN(update_time) AS max_peer_time, UNIX_TIMESTAMP() - MAX(update_time) AS last_peer_time FROM ". TMP_TRACKER_TABLE); // Active users $stat += DB()->fetch_row("SELECT COUNT(DISTINCT user_id) AS u_bt_active FROM ". TMP_TRACKER_TABLE); // All bt-users $stat += DB()->fetch_row("SELECT COUNT(*) AS u_bt_all FROM ". BB_BT_USERS); // All bb-users $stat += DB()->fetch_row("SELECT COUNT(*) AS u_bb_all FROM ". BB_USERS ." WHERE user_id != ". BOT_UID .""); // Active torrents $stat += DB()->fetch_row("SELECT COUNT(DISTINCT topic_id) AS tor_active FROM ". TMP_TRACKER_TABLE); // With seeder $stat += DB()->fetch_row("SELECT COUNT(DISTINCT topic_id) AS tor_with_seeder FROM ". TMP_TRACKER_TABLE ." WHERE seeder = 1"); // All torrents $stat += DB()->fetch_row("SELECT COUNT(*) AS tor_all, SUM(size) AS torrents_size FROM ". BB_BT_TORRENTS); // Last xx minutes $peers_in_last_min = array(); foreach ($peers_in_last_minutes as $t) { $row = DB()->fetch_row(" SELECT COUNT(*) AS peers FROM ". TMP_TRACKER_TABLE ." WHERE update_time >= ". (TIMENOW - 60*$t) ." "); $peers_in_last_min[$t] = (int) $row['peers']; } // Last xx seconds $peers_in_last_sec = array(); $rowset = DB()->fetch_rowset("SELECT COUNT(*) AS peers FROM ". TMP_TRACKER_TABLE ." ORDER BY update_time DESC LIMIT $peers_in_last_sec_limit"); foreach ($rowset as $cnt => $row) { $peers_in_last_sec[] = sprintf('%3s', $row['peers']) . (($cnt && !(++$cnt%15)) ? " \n" : ''); } function commify_callback ($matches) { return commify($matches[0]); } function commify_ob ($contents) { return preg_replace_callback("#\b\d+\b#", 'commify_callback', $contents); } ob_start('commify_ob'); echo ''; echo '

'; echo "\n\n"; echo "\n \n"; echo "\n \n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; echo '\n"; echo '
users: bb-all / bt-all / bt-active $stat[u_bb_all] / $stat[u_bt_all] / $stat[u_bt_active]
torrents: all / active / with seeder $stat[tor_all] / $stat[tor_active] / $stat[tor_with_seeder]   [ ". humn_size($stat['torrents_size']) ." ]
peers: all ($stat[max_peer_time] s) / in ann interval ($announce_interval s) $stat[p_all] / $stat[p_within_ann]   [ up: ". humn_size($stat['speed_up']) ."/s, down: ". humn_size($stat['speed_down']) ."/s ]
peers: in last ". join(' / ', $peers_in_last_minutes) ." min". join(' / ', $peers_in_last_min) ."
peers in last $peers_in_last_sec_limit sec
[ per second, DESC order --> ]
last peer: $stat[last_peer_time] seconds ago
". date("j M H:i:s [T O]") ."
 '. join(' ', $peers_in_last_sec) ."
'; echo '
';

if ($l = sys('la'))
{
	$l = explode(' ', $l);
	for ($i=0; $i < 3; $i++)
	{
		$l[$i] = round($l[$i], 1);
	}
	echo "\n\nloadavg: $l[0] $l[1] $l[2]\n\n";
}

echo 'gen time: '. sprintf('%.4f', (array_sum(explode(' ', microtime())) - TIMESTART)) ." sec\n";

echo '
'; echo ''; DB()->query("DROP TEMPORARY TABLE ". TMP_TRACKER_TABLE); bb_exit();