log_file = 'polyv.log'; } /** * Notes:查询频道直播观看详情数据 * Created on: 2022/5/17 16:01 * Created by: dengbw * https://liche-api-dev.xiaoyu.com/plan/polyv/view_log?sd=1 * https://api.liche.cn/plan/polyv/view_log */ public function view_log() { $this->load->model('live/Live_polyv_viewlog_model', 'mdPolyvViewlog'); $this->load->library('PolyvApi'); $startTime = $endTime = time(); $redis = &load_cache('redis'); $redisKey = 'polyv_view_log_endtime'; $get_endTime = $redis->get($redisKey); $params = $this->input->get(); if ($get_endTime && (date('Y-m-d', $get_endTime) != date('Y-m-d'))) { $get_endTime = ''; } if (!$get_endTime || $params['sd']) { $startTime = strtotime(date('Y-m-d') . ' 00:00:00'); } else if ($get_endTime) { $startTime = $get_endTime; } $params['startTime'] = $startTime * 1000; $params['endTime'] = $endTime * 1000; $params['param3'] = 'live'; $params['page'] = 1; $results = $this->getViewLog($params); if ($results['status'] == 'success') { $redis->save($redisKey, $endTime, 24 * 3600);//保存最后时间 $i = 10; while (($i--) > 0) { if ($results['status'] == 'success' && !$results['lastPage'] && $results['pageNumber'] != $results['nextPageNumber']) {//循环分页 $params['page'] = $results['nextPageNumber']; $results = $this->getViewLog($params); continue; } else { break; } } } if ($params['sd']) { echo 'startTime=' . date('Y-m-d H:i:s', $startTime) . '&endTime=' . date('Y-m-d H:i:s', $endTime) . '

'; echo json_encode($results, JSON_UNESCAPED_UNICODE); } } /** * Notes:新增/修改直播数据 * Created on: 2022/5/19 14:25 * Created by: dengbw * @param $params * @return bool|string */ private function getViewLog($params) { $polyv = new PolyvApi(); $results = $polyv->getViewLog($params); if ($results['status'] == 'success') { $addData = []; foreach ($results['data']['contents'] as $key => $value) { $re = $this->mdPolyvViewlog->get(['playId' => $value['playId']]); $data = [ 'channelId' => $value['channelId'], 'sessionId' => $value['sessionId'], 'playId' => $value['playId'], 'userId' => $value['userId'], 'playDuration' => $value['playDuration'], 'stayDuration' => $value['stayDuration'], 'flowSize' => $value['flowSize'], 'param1' => $value['param1'], 'param2' => $value['param2'], 'param3' => $value['param3'], 'param4' => $value['param4'], 'param5' => $value['param5'], 'ptype' => $value['ptype'], 'ipAddress' => $value['ipAddress'], 'country' => $value['country'], 'province' => $value['province'], 'city' => $value['city'], 'isp' => $value['isp'], 'referer' => $value['referer'], 'userAgent' => $value['userAgent'], 'operatingSystem' => $value['operatingSystem'], 'browser' => $value['browser'], 'isMobile' => $value['isMobile'], 'currentDay' => $value['currentDay'], 'createdTime' => $value['createdTime'], 'lastModified' => $value['lastModified'], ]; if ($re) {//同步更新数据 $this->mdPolyvViewlog->update($data, ['id' => $re['id']]); } else {//新增 $data['c_time'] = time(); $addData[] = $data; } } if ($addData && count($addData)) {//新增数据 $addData = array_reverse($addData); $this->mdPolyvViewlog->add_batch($addData); } } return $results; } }