採集某一個數據時間段的訪問量比率

//採集

    public function actionCai(){
        $data=file_get_contents('log.txt');
        //var_dump($data);die;
        $reg="|20/Feb/2009:(.*) -0800|";
        // var_dump($reg);die;
        preg_match_all($reg,$data,$arr);
        //print_r($arr);die;
        //定義空數組
        $timearr=array();
        //總條數
        $count=count($arr[1]);//346條
        //$arr[1]的格式爲00.00.00
        // var_dump($arr[1]);die;
        foreach($arr[1] as $key=>$val){
            //截取小時數
            // echo substr($val,0,2);
            //截取分鐘數
            // print_R(substr($val,3,2));
            //拼接截取後的小時分鐘數,並循環獲取時間戳,並以$arr[1]的鍵值爲鍵值
            $timearr[$key]=strtotime(substr($val,0,2).':'.substr($val,3,2));
            // print_R($timearr);
        }
        //print_R($timearr);die;
        //die;
        //現在$timearr爲所有時間的時間戳
        //定義空數組
        //print_r($timearr);
        $data=array();
        // $timearr = array();
        // print_r($timearr);die;
        //00:00時間戳
        //echo strtotime("2016-10-23 00:00:00");die;
        //echo date('Y-m-d H:i:s','1477152000');die;現在
        //1477152600
        //echo date('H:i',"1235059200");die;
        //$a爲00:00  ,43200爲12小時
        for($a=1477152000;$a<1477152000+86400;$a++){
            // echo $a;
            foreach($timearr as $k=>$v){
                //var_dump($v);
                if($v<=$a+600 && $v>$a){
                    $k1=date('H:i',$a+60);
                    // var_dump($k1,'<br/>');
                    $k2=date('H:i',$a+600);
                    $data[$k1.' - '.$k2][]=$v;
                }
            }

            $a=$a+599;//每循環一次加10分
        }

        //var_dump($data);die;
        //計算點擊量並放入數組中
        foreach($data as $key=>$val){
            $data[$key]['count']=count($val);
        }
        // var_dump($data);die;
        //
        // 計算比例並放入數組
        foreach($data as $key=>$val){
            $data[$key]['bl']=substr($data[$key]['count']/$count*100,0,4).'%';
        }
        // //分頁
        //   $pagination=new Pagination(['totalCount' =>count($data)]);
       // print_r($data);die;
        return $this->render('cai',['data'=>$data]);
    }

//採集訪問量
 public function actionGather(){
     $data=file_get_contents('log.txt');
     $reg='/.* - - (.*) ".*"/';
//     'x-132-204-255-66.xtpr.umontreal.ca - - [21/Feb/2009:13:05:09 -0800] "GET /uwnidrr/images/headersfooters/IconSpacer.gif HTTP/1.1" 200 109';
      //var_dump($data);die;
     preg_match_all($reg,$data,$arr);
     //print_r($arr[1]);die;
     //定義空數組
     $count=count($arr[1]);
     //$str=substr($arr[1][0],13,2);
     $hours=array();
     //將指定數量的帶有指定值的元素插入到數組中 插入24個 值爲0。
     $hours = array_pad($hours, 24, 0);
     foreach($arr[1] as $k=>$v){
         $str=substr($arr[1][$k],13,2);
         $str=(int)$str;
          ++$hours[$str];
//         switch ($str) {
//             case '00':
//                 ++$hours[0];
//                 break;
//             case '01':
//                 ++$hours[1];
//                 break;
//             case '02':
//                 ++$hours[2];
//                 break;
//             case '03':
//                 ++$hours[3];
//                 break;
//             case '04':
//                 ++$hours[4];
//                 break;
//             case '05':
//                 ++$hours[5];
//                 break;
//             case '06':
//                 ++$hours[6];
//                 break;
//             case '07':
//                 ++$hours[7];
//                 break;
//             case '08':
//                 ++$hours[8];
//                 break;
//             case '09':
//                 ++$hours[9];
//                 break;
//             case '10':
//                 ++$hours[10];
//                 break;
//             case '11':
//                 ++$hours[11];
//                 break;
//             case '12':
//                 ++$hours[12];
//                 break;
//             case '13':
//                 ++$hours[13];
//                 break;
//             case '14':
//                 ++$hours[14];
//                 break;
//             case '15':
//                 ++$hours[15];
//                 break;
//             case '16':
//                 ++$hours[16];
//                 break;
//             case '17':
//                 ++$hours[17];
//                 break;
//             case '18':
//                 ++$hours[18];
//                 break;
//             case '19':
//                 ++$hours[19];
//                 break;
//             case '20':
//                 ++$hours[20];
//                 break;
//             case '21':
//                 ++$hours[21];
//                 break;
//             case '22':
//                 ++$hours[22];
//                 break;
//             case '23':
//                 ++$hours[23];
//                 break;
//             default:
//                 break;
//         }
     }
     return $this->render('gather',['hours'=>$hours,'count'=>$count]);
 }
<?php
use yii\helpers\Html;
use yii\helpers\Url;
?>
<table class="table">

    <tr>
        <th>時段</th>
        <th>佔比</th>
    </tr>
    <?php foreach($hours as $key=>$hour):?>
        <tr>
            <td><?= $key.'-'.($key+1);?></td>
            <td><?= (float)(($hour/$count)*100).'%'?></td>
        </tr>
    <?php endforeach;?>
</table>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章