【发布时间】:2017-12-24 08:35:49
【问题描述】:
我需要从 Piwik Analytics 拨打两个或更多 HTTP API 到 GET META。不幸的是,他们的 method=API.getBulkRequest 方法不适用于 PHP 调用,并且仅适用于 JSON 和 XML - 这两种方法都不适用于此请求。
可以合并
https://demo.piwik.org/?module=API&method=Actions.get&idSite=7&period=month&date=last3&format=xml&token_auth=anonymous
和
https://demo.piwik.org/?module=API&method=VisitsSummary.get&idSite=7&period=month&date=last3&format=xml&token_auth=anonymous
使用这种方法调用API
$url = "https://demo.piwik.org/";
$url .= "?module=API&method=Actions.get";
$url .= "&idSite=7&period=month&date=last3";
$url .= "&format=php&filter_sort_order=desc";
$url .= "&token_auth=anonymous";
所以我可以GET 使用数据
foreach ($content as $dates => $row) {
$visits = @$row['nb_pageviews'] ?: 0;
$unique = @$row['nb_uniq_pageviews'] ?: 0;
$actions = @$row['nb_outlinks'] ?: 0;
$bounce = @$row['bounce_count'] ?: 0;
$bounce_rate = @$row['bounce_rate'] ?: 0;
$time = @$row['avg_time_on_site'] ?: 0;
感谢您的帮助,明天圣诞快乐
更新.PHP 文件中的完整代码
<?php
$url = "https://demo.piwik.org/";
$url .= "?module=API&method=Actions.get";
$url .= "&idSite=7&period=month&date=last3";
$url .= "&format=php&filter_sort_order=desc";
$url .= "&token_auth=anonymous";
$fetched = file_get_contents($url);
$content = unserialize($fetched);
krsort($content);
// case error
if (!$content) {
print("<tr><td class='month subscriber subscriber-fixed-alone fixed-cell'></td><td class='stat number text-center'>Error, analytics not available at the moment.</td></tr>");
}
foreach ($content as $dates => $row) {
$visits = @$row['nb_pageviews'] ?: 0;
$unique = @$row['nb_uniq_pageviews'] ?: 0;
$actions = @$row['nb_outlinks'] ?: 0;
$bounce = @$row['bounce_count'] ?: 0;
$bounce_rate = @$row['bounce_rate'] ?: 0;
$time = @$row['avg_time_on_site'] ?: 0;
$date = $dates;
$action_percent = get_percentage($visits,$actions);
$unique_percent = get_percentage($visits,$unique);
print("<tr>");
print("<td class='month subscriber subscriber-fixed-alone fixed-cell'>" .date('F Y',strtotime($date)). "</td>");
print("<td class='stat number text-center'>$visits</td>");
print("<td class='stat number text-center'>$unique ($unique_percent%)</td>");
print("<td class='stat number text-center'>$actions ($action_percent%)</td>");
print("<td class='stat number text-center'>$bounce ($bounce_rate)</td>");
print("<td class='stat number text-center'>$time</td>");
print("</tr>");
}?>
【问题讨论】:
-
为什么不能进行两个单独的调用?
-
为什么他们的
API.getBulkRequest不能在 PHP 中工作? -
要求格式为 JSON 或 XML。
-
@KIKOSoftware。我尝试了另一个
$url =,但它只是阻止了所有数据的检索。 -
"To send a bulk tracking request, an HTTP POST must be made with a JSON object to the Piwik tracking endpoint."?那是来自他们的api文档。发送这种类型的请求数据有什么问题 - json 没什么特别的