2016-07-11 2 views
1

Google 애널리틱스 API (PHP 클라이언트 라이브러리 - 서버 간 서비스로 사용)를 여러 번 사용하면 빈 결과 집합이 반환됩니다. 이 같은 내 코드 조회 :Google 애널리틱스 API가 빈 결과를 반환하는 경우가 있음

public function getLeadDetails($view, $gauid, $lead_id,$refresh_token,$dates = []) 
{ 
    Log::info("*****************GA Service - GAUID: ".$gauid." **********************************"); 
    $options['dimensions'] = implode(',',config('analytics.dimensions')); 
    $options['filters'] = "ga:eventAction==".$gauid; 
    $metrics = "ga:users"; 
    $view = "ga:".$view; 
    $yesterday = date('Y-m-d',strtotime('yesterday')); 
    $tomorrow = date("Y-m-d",strtotime('tomorrow')); 
    if(count($dates)){ 
     $yesterday = $dates['yesterday']; 
     $tomorrow = $dates['tomorrow']; 
    } 
    Log::info('[email protected](), Request Params: ?ids='.$view.'&start-date='.$yesterday.'&end-date='.$tomorrow.'&metrics='.$metrics.'&dimensions='.$options['dimensions'].'&filters='.$options['filters']); 
    try{ 
     $this->client->setAccessType('offline'); 
     $this->client->setAccessToken($refresh_token); 
     $this->client->setClientId(config('analytics.client_id')); 
     $this->client->setScopes([ 
      \Google_Service_Analytics::ANALYTICS, 
      \Google_Service_Analytics::ANALYTICS_EDIT, 
     ]); 
     $analytics = new \Google_Service_Analytics($this->client); 
     $data = $analytics->data_ga->get($view,$yesterday,$tomorrow,$metrics,$options); 
     if($data['totalResults'] && $data['totalResults'] > 0){ 
      Log::info('Inside [email protected] has totalResults'); 
      $rtn = []; 
      $i = 0; 
      foreach ($data['rows'] as $row) { 
       $rtn['uacid'] = $gauid; 
       $rtn['user_type'] = $row[0]; 
       $rtn['device_category'] = $row[1]; 
       $rtn['source'] = $row[2]; 
       $rtn['medium'] = $row[3]; 
       $rtn['campaign'] = $row[4]; 
       $rtn['ad_group'] = $row[5]; 
       $rtn['path'] = $row[6]; 
       $i++; 
      } 
      Log::info('Inside [email protected] lead '.$lead_id.' should be update'); 
      return $this->insertLeadDetails($rtn , $lead_id); 
     } 
     Log::info('GA_Service::getLeadDetails() returned empty results for lead: '.$lead_id); 
     if(!count($dates)){ 
      $this->throwException('empty results for lead: '.$lead_id.' in GA_Service::getLeadDetails()',275); 
      return false; 
     } 
     return 'empty results for lead: '.$lead_id.' in GA_Service::getLeadDetails()'; 
    }catch (\Google_Service_Exception $e){ 
     Log::info('Google service exception from GA_Service::getLeadDetails() - '. $e->getErrors()[0]['message']); 
     $this->throwException($e->getErrors()[0]['message'], 335); 
    } 
    return false; 
} 

결과 (5 회) 비어 다시 5 분마다 경우이 기능 화재 여전히 몇 가지 결과를 벗어났습니다.

어떤 아이디어가 있고 어떻게 해결할 수 있습니까?

답변

1

왜 5 분마다 발포합니까?

핵심보고 API의 데이터가 24 - 48 시간 동안 안정적이지 않을 수 있습니다. 그 시간이 지나면 결코 변하지 않으므로 당신이 그것을 얼마간 절약한다고 가정 할 때 다시 요구할 이유가 없을 것입니다.

Data processing latency

처리 지연 시간은 24 ~ 48 시간이다. 애널리틱스에 하루에 200,000 회의 세션보다 을 더 많이 보내는 표준 계정의 경우 보고서가 하루에 한 번만 새로 고침됩니다. 이로 인해 최대 2 일 동안 보고서 및 측정 항목에 대한 업데이트가 지연 될 수 있습니다. 하루 동안의 처리를 복원하려면 귀하의 계정이 하루에 < 200000으로 보내는 세션 수를 줄이십시오. 프리미엄 계정의 경우이 한도는 한 달에 20 억 히트까지 확장됩니다.

처리가 완료되지 않았으므로 아마 데이터가 표시되지 않는 것일 수 있습니다.

실시간 정보를 보려면 real-time api을 사용해야합니다.

+1

감사의 인사,이 부분이 아마도 누락되었습니다. – benjah