Ejemplo n.º 1
0
 static function getAllSitesRank()
 {
     $allSite = HuijiPrefix::getAllPrefix();
     $today = date('Y-m-d');
     $yesterday = date('Y-m-d', strtotime('-1 days'));
     $lastWeek = date('Y-m-d', strtotime('-8 days'));
     $lastMonth = date('Y-m-d', strtotime('-31 days'));
     $ueb = new UserEditBox();
     $editUserYesterday = $ueb->getSiteEditUserCount($yesterday, $yesterday);
     $editUserWeek = $ueb->getSiteEditUserCount($lastWeek, $yesterday);
     $editUserMonth = $ueb->getSiteEditUserCount($lastMonth, $yesterday);
     // print_r($editUserYesterday);
     $viewDate = array();
     $editDate = array();
     $editUserDate = array();
     foreach ($allSite as $value) {
         $viewResult['yesterday'] = $ueb->getSiteViewCount('', $value, $yesterday, $yesterday);
         $viewResult['week'] = $ueb->getSiteViewCount('', $value, $lastWeek, $yesterday);
         $viewResult['month'] = $ueb->getSiteViewCount('', $value, $lastMonth, $yesterday);
         $editResult['yesterday'] = $ueb->getSiteEditCount('', $value, $yesterday, $yesterday);
         $editResult['week'] = $ueb->getSiteEditCount('', $value, $lastWeek, $yesterday);
         $editResult['month'] = $ueb->getSiteEditCount('', $value, $lastMonth, $yesterday);
         $viewDate[$value] = round($viewResult['yesterday'] + $viewResult['week'] / 7 + $viewResult['month'] / 30);
         $editDate[$value] = round($editResult['yesterday'] + $editResult['week'] / 7 + $editResult['month'] / 30);
         $editUserDate[$value] = round(isset($editUserYesterday[$value]) ? $editUserYesterday[$value] : 0 + (isset($editUserWeek[$value]) ? $editUserWeek[$value] : 0) / 7 + (isset($editUserMonth[$value]) ? $editUserMonth[$value] : 0) / 30);
     }
     //sort arr
     asort($viewDate);
     asort($editDate);
     asort($editUserDate);
     // print_r($editUserDate);
     $i = 1;
     //loop score
     $viewRes = array();
     $editRes = array();
     $editUserRes = array();
     foreach ($viewDate as $key => $value) {
         $viewRes[$key] = $i * 10;
         $i++;
     }
     $j = 1;
     foreach ($editDate as $key => $value) {
         $editRes[$key] = $j * 10;
         $j++;
     }
     $k = 1;
     foreach ($editUserDate as $key => $value) {
         $editUserRes[$key] = $k * 10;
         $k++;
     }
     //highest score
     $highest = ($k - 1) * 100;
     //Comprehensive 2 4 4
     $allRank = array();
     foreach ($viewRes as $key => $value) {
         $allRank[$key] = $value * 2 + $editRes[$key] * 4 + $editUserRes[$key] * 4;
     }
     arsort($allRank);
     $x = 1;
     // print_r($allRank);
     //final rank
     foreach ($allRank as $key => $value) {
         $rank = $x;
         $score = round(100 * $value / $highest, 2);
         // $numRank['rank'] = $x;
         // $numRank['score'] = round(100*$value/$highest, 2);
         // $res[$key] = $numRank;
         //insert
         $dbw = wfGetDB(DB_MASTER);
         $dbw->insert('site_rank', array('site_rank' => $rank, 'site_score' => $score, 'site_prefix' => $key, 'site_rank_date' => $yesterday), __METHOD__);
         //best rank
         $key_rank = AllSitesInfo::getSiteBestRank($key);
         $site_rank = !is_null($key_rank) ? $key_rank : 1000;
         if ($rank < $site_rank) {
             $dbw = wfGetDB(DB_MASTER);
             $dbw->upsert('site_best_rank', array('site_rank' => $rank, 'site_prefix' => $key), array('site_prefix' => $key), array('site_rank' => $rank), __METHOD__);
         }
         $x++;
     }
 }
Ejemplo n.º 2
0
 /**
  * get site's best rank
  * @return string
  */
 public function getBestRank()
 {
     $yesterday = date('Y-m-d', strtotime('-1 days'));
     $key = $this->getCustomKey('getBestRank' . $yesterday);
     $data = $this->cache->get($key);
     if ($data != '') {
         return $data;
     } else {
         $rank = AllSitesInfo::getSiteBestRank($this->mPrefix);
         return $rank;
         $this->cache->set($key, $rank, 48 * 60 * 60);
     }
     return $rank;
 }