php - 谷歌分析 API 优化

标签 php laravel google-analytics laravel-5 google-analytics-api

我正在开发一个需要将 Google Analytics API 与 PHP 集成的应用程序。 这是 API 文档的链接 Google Analytics Core Reporting API ,目前我正面临过载问题。

在我们的应用程序中,我们需要为选定的日期范围形成一个图表。例如 session 计数。 API 具有开始和结束数据等参数的选项,但作为响应,它仅提供 session 计数的平均值/总数/页面加载时间。但是为了生成图表,我们确实需要给定日期范围内每一天的数据。例如2015 年 1 月 1 日至 1 月 30 日,对于这种情况,我们必须每天发送 30 个请求并使用此方法获取图表数据。有没有什么方法可以减少请求数或获取日期格式的数据?

我们正在收集许多指标,如平均页面加载时间、有机 session 等。这使得它在页面加载时向 google API 本身发出 180-210 次请求,有时它会抛出一个错误,即过度使用来自 google 的资源。

最佳答案

您可以添加 ga:date dimension .它将分解日期范围内每个日期的每个指标的值:

在 JSON 中

{
  "reportRequests": 
  [
    {
      "dimensions": 
      [
        {
          "name": "ga:date"
        }
      ],
      "metrics": 
      [
        {
          "expression": "ga:sessions"
       },
        {
          "expression": "ga:avgpageloadtime"
        }
      ],
      "viewId": "XXXX",
      "dateRanges": 
      [
        {
          "startDate": "7daysAgo",
          "endDate": "yesterday"
        }
      ]
    }
  ]
}

在 PHP 中

// Create the DateRange object.
$dateRange = new Google_Service_Analyticsreporting_DateRange();
$dateRange->setStartDate("7DaysAgo");
$dateRange->setEndDate("yesterday");

// Create the Metrics objects.
$sessions = new Google_Service_Analyticsreporting_Metric();
$sessions->setExpression("ga:sessions");
$avgpageloadtime = new Google_Service_Analyticsreporting_Metric();
$avgpageloadtime->setExpression("ga:avgpageloadtime");

//Create the Dimensions object.
$date = new Google_Service_Analyticsreporting_Dimension();
$date->setName("ga:date");

// Create the ReportRequest object.
$request = new Google_Service_Analyticsreporting_ReportRequest();
$request->setViewId("XXXX");
$request->setDateRanges($dateRange);
$request->setDimensions(array($date));
$request->setMetrics(array($sessions, $avgpageloadtime));

$body = new Google_Service_Analyticsreporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
return $analyticsreporting->reports->batchGet( $body );

关于php - 谷歌分析 API 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089688/

相关文章:

laravel - 如何使用 Laravel 8 + Fortify 在用户验证其电子邮件后自定义操作

laravel - C-Panel/VM/Laravel 错误 - 打开 "https://example.com"时,它会重定向到 "allowandgo.com/?p=gm3ggojwgq5gi3bphezda"这个 URL

javascript - 使用/Javascript 捕获引用 URL 参数并传递给 Google Analytics

PHP 从字符串中获取整数

php - MySQL 5.7+,嵌套路径中的 JSON_SET 值

php - Laravel sqlite 数据库连接错误

ios - 为什么我的 iOS 应用程序在 Google Analytics 中的 session 时长超过 30 分钟?

google-analytics - Google Data Studio:按天计算的总和(事件值(value))图

javascript - 使用 javascript 根据两个选项之一设置隐藏值

php - 为什么忽略 MYSQLI_CLIENT_FOUND_ROWS?