/** * Prepare the analyzer * @return array An array with all users with the usernames and the ips set */ private static function prepare() { $users = array(); $ranges = OnlineRange::getRanges(); foreach ($ranges as $range) { $client_id = $range->user->client_id; $username = $range->user->username; $ip = UserCollapser::preprocessIP($range->ip); $time = Utils::getTimestamp($range->end) - Utils::getTimestamp($range->start); if (!isset($users[$client_id])) { $users[$client_id] = array("client_id" => $client_id, "ips" => array(), "usernames" => array(), "time" => 0); } if (!isset($users[$client_id]['ips'][$ip])) { $users[$client_id]['ips'][$ip] = 0; } $users[$client_id]['ips'][$ip] += $time; if (!isset($users[$client_id]['usernames'][$username])) { $users[$client_id]['usernames'][$username] = 0; } $users[$client_id]['usernames'][$username] += $time; $users[$client_id]['time'] += $time; UserCollapser::$unionFind[$client_id] = $client_id; } return $users; }
private static function buildTimes() { $ranges = OnlineRange::getRanges(); foreach ($ranges as $range) { DailyUserUptimeAnalyzer::addRangeTime($range); } }
public static function runAnalysis() { ProbableUsernameAnalyzer::$USE_LAST_N = Config::get("analyzers.ProbableUsernameAnalyzer.use_last_n", ProbableUsernameAnalyzer::USE_LAST_N); $ranges = OnlineRange::getRanges(); ProbableUsernameAnalyzer::splitRanges($ranges); ProbableUsernameAnalyzer::computeUsernames(); ProbableUsernameAnalyzer::saveUsernames(ProbableUsernameAnalyzer::$usernames); }
public static function runAnalysis() { DailyAnalyzer::$numOfWeeks = DailyAnalyzer::getNumOfWeek(); $startTime = microtime(true); $ranges = DailyAnalyzer::expandRanges(OnlineRange::getRanges()); $endTime = microtime(true); Logger::log(" Expand ranges -> ", $endTime - $startTime); usort($ranges, "OnlineRange::cmpByStart"); $grid = DailyAnalyzer::divideRanges($ranges); $averages = array(); foreach ($grid as $i => $cell) { $averages[$i] = DailyAnalyzer::getAvgNumber($cell); } DailyAnalyzer::saveAverages($averages); }
public static function runAnalysis() { DailyAnalyzer2::$fenwickTree = new FenwickTree(DailyAnalyzer2::NUM_SEC); $ranges = OnlineRange::getRanges(); $startTime = microtime(true); foreach ($ranges as $range) { DailyAnalyzer2::processRange($range); } $endTime = microtime(true); Logger::log(" Process ranges -> ", $endTime - $startTime); $startTime = microtime(true); $averages = DailyAnalyzer2::getAverages(); $endTime = microtime(true); Logger::log(" Get averages -> ", $endTime - $startTime); DailyAnalyzer2::saveAverages($averages); }
/** * Run all the analyzers * @param bool|false $fastOnly If it is set to true only the fast analyzers are runned */ public static function runAnalysis($fastOnly = false) { $analyzers = MainAnalyzer::loadAnalyzers($fastOnly); $analysisStart = microtime(true); Logger::log("Preparing ranges:"); OnlineRange::getRanges(); foreach ($analyzers as $analyzer) { Logger::log("Avviato {$analyzer}"); $startTime = microtime(true); $analyzer::runAnalysis(); $endTime = microtime(true); Logger::log(" Tempo impiegato:", $endTime - $startTime); } $analysisEnd = microtime(true); Logger::log("Fine analisi. Tempo impiegato:", $analysisEnd - $analysisStart); }
public static function runAnalysis() { $ranges = OnlineRange::getRanges(); usort($ranges, "OnlineRange::cmpByStart"); $onlineCount = 0; $queue = new OnlineRangePriorityQueue(); $maxOnline = 0; $maxOnlineTime = null; $timeSlicer = new TimeSlicer(); $onlineUsers = array(); foreach ($ranges as $range) { // disconnette gli utenti while ($queue->valid() && $queue->current()->end < $range->start) { $timeSlicer->addTimePerNumUser($onlineCount, $queue->current()->end); $onlineUsers[$queue->current()->user->client_id]--; if ($onlineUsers[$queue->current()->user->client_id] == 0) { unset($onlineUsers[$queue->current()->user->client_id]); } $queue->extract(); } // connette l'utente dell'intervallo $timeSlicer->addTimePerNumUser($onlineCount, $range->start); $queue->insert($range, $range->end); if (!isset($onlineUsers[$range->user->client_id])) { $onlineUsers[$range->user->client_id] = 0; } $onlineUsers[$range->user->client_id]++; $onlineCount = max($onlineCount, count($onlineUsers)); if ($onlineCount > $maxOnline) { $maxOnline = $onlineCount; $maxOnlineTime = $range->start; } } // svuota la coda while ($queue->valid()) { $timeSlicer->addTimePerNumUser($onlineCount, $queue->current()->end); $queue->extract(); } Logger::log(" Picco massimo di utenti", $maxOnline, "il", $maxOnlineTime->format('Y-m-d H:i:s')); OnlineAnalyzer::saveMaxPeak($maxOnline, $maxOnlineTime); OnlineAnalyzer::saveTimePerNum($timeSlicer->getTimePerNumUser()); }
public static function runAnalysis() { DailyAnalyzer3::$TIME_SCALE = Config::get("analyzers.DailyAnalyzer3.time_scale", DailyAnalyzer3::TIME_SCALE); DailyAnalyzer3::getBounds(); DailyAnalyzer3::$fenwickTree = new FenwickTree(DailyAnalyzer3::$timeSpan + 10); $ranges = OnlineRange::getRanges(); $startTime = microtime(true); foreach ($ranges as $range) { DailyAnalyzer3::processRange($range); } $endTime = microtime(true); Logger::log(" Process ranges -> ", $endTime - $startTime); $startTime = microtime(true); $averages = DailyAnalyzer3::getAverages(); $endTime = microtime(true); Logger::log(" Get averages -> ", $endTime - $startTime); $startTime = microtime(true); DailyAnalyzer3::saveAverages($averages); $endTime = microtime(true); Logger::log(" Save averages -> ", $endTime - $startTime); }
public static function runAnalysis() { $ranges = OnlineRange::getRanges(); $times = UsernameUptimeAnalyzer::computeTimes($ranges); UsernameUptimeAnalyzer::saveTimes($times); }
/** * The last connect time of the users * @return array */ public static function getLastOnline() { OnlineRange::getRanges(); return OnlineRange::$last_online; }