release 1.3.8
This commit is contained in:
@@ -2,9 +2,6 @@
|
||||
function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,$select_arr) {
|
||||
$starttime = microtime(true);
|
||||
$sqlexec = '';
|
||||
$max_timestamp = key($select_arr['max_timestamp_user_snapshot']);
|
||||
$min_timestamp_week = key($select_arr['usersnap_min_week']);
|
||||
$min_timestamp_month = key($select_arr['usersnap_min_month']);
|
||||
|
||||
$job_begin = $select_arr['job_check']['calc_user_limit']['timestamp'];
|
||||
$job_end = ceil(count($select_arr['all_user']) / 10) * 10;
|
||||
@@ -17,52 +14,52 @@ function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,$select_arr) {
|
||||
|
||||
$sqlhis = array_slice($select_arr['all_user'],$job_begin ,10);
|
||||
|
||||
$uuids = '';
|
||||
$cldbids = '';
|
||||
foreach ($sqlhis as $uuid => $userstats) {
|
||||
$uuids .= "'".$uuid."',";
|
||||
$cldbids .= $userstats['cldbid'].',';
|
||||
}
|
||||
unset($userstats,$uuid);
|
||||
$uuids = substr($uuids, 0, -1);
|
||||
$cldbids = substr($cldbids, 0, -1);
|
||||
|
||||
$weekago = $select_arr['job_check']['last_snapshot_id']['timestamp'] - 28;
|
||||
$monthago = $select_arr['job_check']['last_snapshot_id']['timestamp'] - 120;
|
||||
if ($weekago < 1) $weekago = $weekago + 121;
|
||||
if ($monthago < 1) $monthago = $monthago + 121;
|
||||
|
||||
if(isset($sqlhis) && $max_timestamp != NULL && $min_timestamp_week != NULL && $min_timestamp_month != NULL) {
|
||||
if(isset($sqlhis)) {
|
||||
enter_logfile($cfg,6,"Update User Stats between ".$job_begin." and ".$job_end.":");
|
||||
if(($userdataweekbegin = $mysqlcon->query("SELECT `uuid`,`count`,`idle` FROM `$dbname`.`user_snapshot` WHERE `timestamp`=$min_timestamp_week AND `uuid` IN ($uuids)")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
|
||||
if(($userdata = $mysqlcon->query("SELECT `cldbid`,`id`,`count`,`idle` FROM `$dbname`.`user_snapshot` WHERE `id` IN ({$select_arr['job_check']['last_snapshot_id']['timestamp']},{$weekago},{$monthago}) AND `cldbid` IN ($cldbids)")->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC)) === false) {
|
||||
enter_logfile($cfg,2,"calc_userstats 6:".print_r($mysqlcon->errorInfo(), true));
|
||||
}
|
||||
if(($userdatamonthbegin = $mysqlcon->query("SELECT `uuid`,`count`,`idle` FROM `$dbname`.`user_snapshot` WHERE `timestamp`=$min_timestamp_month AND `uuid` IN ($uuids)")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
|
||||
enter_logfile($cfg,2,"calc_userstats 8:".print_r($mysqlcon->errorInfo(), true));
|
||||
}
|
||||
if(($userdataend = $mysqlcon->query("SELECT `uuid`,`count`,`idle` FROM `$dbname`.`user_snapshot` WHERE `timestamp`=$max_timestamp AND `uuid` IN ($uuids)")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
|
||||
enter_logfile($cfg,2,"calc_userstats 7:".print_r($mysqlcon->errorInfo(), true));
|
||||
}
|
||||
|
||||
unset($uuids,$job_begin,$max_timestamp,$min_timestamp_week,$min_timestamp_month);
|
||||
$allupdateuuid = '';
|
||||
|
||||
foreach ($sqlhis as $uuid => $userstats) {
|
||||
check_shutdown($cfg); usleep($cfg['teamspeak_query_command_delay']);
|
||||
try {
|
||||
$clientinfo = $ts3->clientInfoDb($userstats['cldbid']);
|
||||
$keybase = array_search($select_arr['job_check']['last_snapshot_id']['timestamp'], array_column($userdata[$userstats['cldbid']], 'id'));
|
||||
$keyweek = array_search($weekago, array_column($userdata[$userstats['cldbid']], 'id'));
|
||||
$keymonth = array_search($monthago, array_column($userdata[$userstats['cldbid']], 'id'));
|
||||
|
||||
if(isset($userdataend[$uuid]) && isset($userdataweekbegin[$uuid])) {
|
||||
$count_week = $userdataend[$uuid]['count'] - $userdataweekbegin[$uuid]['count'];
|
||||
$idle_week = $userdataend[$uuid]['idle'] - $userdataweekbegin[$uuid]['idle'];
|
||||
if(isset($userdata[$userstats['cldbid']]) && isset($userdata[$userstats['cldbid']][$keyweek]) && $userdata[$userstats['cldbid']][$keyweek]['id'] == $weekago) {
|
||||
$count_week = $userdata[$userstats['cldbid']][$keybase]['count'] - $userdata[$userstats['cldbid']][$keyweek]['count'];
|
||||
$idle_week = $userdata[$userstats['cldbid']][$keybase]['idle'] - $userdata[$userstats['cldbid']][$keyweek]['idle'];
|
||||
$active_week = $count_week - $idle_week;
|
||||
} else {
|
||||
$count_week = 0;
|
||||
$idle_week = 0;
|
||||
$active_week = 0;
|
||||
}
|
||||
if(isset($userdataend[$uuid]) && isset($userdatamonthbegin[$uuid])) {
|
||||
$count_month = $userdataend[$uuid]['count'] - $userdatamonthbegin[$uuid]['count'];
|
||||
$idle_month = $userdataend[$uuid]['idle'] - $userdatamonthbegin[$uuid]['idle'];
|
||||
if(isset($userdata[$userstats['cldbid']]) && isset($userdata[$userstats['cldbid']][$keymonth]) && $userdata[$userstats['cldbid']][$keymonth]['id'] == $monthago) {
|
||||
$count_month = $userdata[$userstats['cldbid']][$keybase]['count'] - $userdata[$userstats['cldbid']][$keymonth]['count'];
|
||||
$idle_month = $userdata[$userstats['cldbid']][$keybase]['idle'] - $userdata[$userstats['cldbid']][$keymonth]['idle'];
|
||||
$active_month = $count_month - $idle_month;
|
||||
} else {
|
||||
$count_month = 0;
|
||||
$idle_month = 0;
|
||||
$active_month = 0;
|
||||
}
|
||||
$clientdesc = $mysqlcon->quote($clientinfo['client_description'], ENT_QUOTES);;
|
||||
$clientdesc = $mysqlcon->quote($clientinfo['client_description'], ENT_QUOTES);
|
||||
$allupdateuuid .= "('$uuid',$count_week,$count_month,$idle_week,$idle_month,$active_week,$active_month,{$clientinfo['client_totalconnections']},'{$clientinfo['client_base64HashClientUID']}',{$clientinfo['client_total_bytes_uploaded']},{$clientinfo['client_total_bytes_downloaded']},$clientdesc),";
|
||||
} catch (Exception $e) {
|
||||
if($e->getCode() == 512) {
|
||||
@@ -72,7 +69,7 @@ function calc_userstats($ts3,$mysqlcon,$cfg,$dbname,$select_arr) {
|
||||
if($getcldbid[0] != $userstats['cldbid']) {
|
||||
enter_logfile($cfg,4," Client (uuid: ".$uuid." cldbid: ".$userstats['cldbid'].") known by the Ranksystem changed its cldbid. New cldbid is ".$getcldbid[0].".");
|
||||
if($cfg['rankup_client_database_id_change_switch'] == 1) {
|
||||
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`=0,`idle`=0 WHERE `uuid`='$uuid'; UPDATE `$dbname`.`stats_user` SET `count_week`=0,`count_month`=0,`idle_week`=0,`idle_month`=0,`achiev_time`=0,`achiev_time_perc`=0,`active_week`=0,`active_month`=0 WHERE `uuid`='$uuid'; DELETE FROM `$dbname`.`user_snapshot` WHERE `uuid`='$uuid'; ";
|
||||
$sqlexec .= "UPDATE `$dbname`.`user` SET `count`=0,`idle`=0 WHERE `uuid`='$uuid'; UPDATE `$dbname`.`stats_user` SET `count_week`=0,`count_month`=0,`idle_week`=0,`idle_month`=0,`achiev_time`=0,`achiev_time_perc`=0,`active_week`=0,`active_month`=0 WHERE `uuid`='$uuid'; DELETE FROM `$dbname`.`user_snapshot` WHERE `cldbid`='{$userstats['cldbid']}'; ";
|
||||
enter_logfile($cfg,4," ".sprintf($lang['changedbid'], $userstats['name'], $uuid, $userstats['cldbid'], $getcldbid[0]));
|
||||
} else {
|
||||
$sqlexec .= "UPDATE `$dbname`.`user` SET `cldbid`={$getcldbid[0]} WHERE `uuid`='$uuid'; ";
|
||||
|
||||
Reference in New Issue
Block a user