/**
  * 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;
 }