dokumentierten Parameter gehalten und breche mir mit dem “date” Parameter in rot markiert:
date
◦standard format = YYYY-MM-DD
◦magic keywords = today or yesterday. They are relative the website timezone. For example, for a website with UTC+12 timezone, “date=today” for an API request at 5PM UTC on 2010-01-01 will return the reports for 2010-01-02.
◦range of dates
■lastX for the last X periods including today (eg &date=last10&period=day would return an entry for each of the last 10 days including today). This is relative to the website timezone.
■previousX returns the last X periods before today (eg. &date=last52&period=week will return an entry for each of the 52 weeks before this week). This is relative to the website timezone.
■YYYY-MM-DD,YYYY-MM-DD for every day in the date range
inzwischen einen ab.
Die Ausgabe soll als Bsp. die Daten für folgenden Zeitraum ausgeben:
…&idSite=1&period=day&date=2009-12-09&date=today
Der 09.12.2010 ist der Tag an dem das Piwik das 1te Mal installiert wurde und seitdem Besucher-Daten aufgezeichnet wurden.
Weiß evtl. jemand wo ich in dem Parameter einen Fehler habe?
Danke und Grüße aus Hamburg
ps. Auch im Dashboard kann ich unter “Zeitspanne” keine Möglichkeit für eine Tag X bis Tag Y Range finden.
Was kommt denn als Ergebnis? “Geht nicht” ist immer ein wenig zu wenig.
Bei mir läuft eine API-Abfrage in der Form ohne Probleme …
http :///?module=API&method=VisitsSummary.getVisits&idSite=3&period=day&date=2010-07-19,2010-08-02&format=PHP&token_auth=
Allerdings, das habe ich sorry allerdings vergessen zu erwähnen, nicht mit diesem Script:
<?php
// this token is used to authenticate your API request.
// You can get the token on the API page inside your Piwik interface
$token_auth = 'anonymous';
// we call the REST API and request the 100 first keywords for the last month for the idsite=1
$url = "http://demo.piwik.org/";
$url .= "?module=API&method=Referers.getKeywords";
// $url .= "&idSite=1&period=month&date=yesterday";
$url .= "&idSite=1&period=day&date=2010-07-19,2010-08-02"; // dat löppt nicht
$url .= "&format=PHP&filter_limit=20";
$url .= "&token_auth=$token_auth";
$fetched = file_get_contents($url);
$content = unserialize($fetched);
// case error
if(!$content)
{
print("Error, content fetched = ".$fetched);
}
print("<h1>Keywords for the last month</h1>");
foreach($content as $row)
{
$keyword = urldecode($row['label']);
$hits = $row['nb_visits'];
print("<b>$keyword</b> ($hits hits)<br>");
}
Dann lass Dir doch mal direkt $content ausgeben.
Sicher, dass es mit anonymous überhaupt funktioniert und Dir nicht nur Berechtigungen fehlen?
Kamen mit Deinem Skript überhaupt schon mal Daten zurück, z.B. für den Tag?
[quote=Thomas Seifert @ Aug 3 2010, 01:17 PM]1) Dann lass Dir doch mal direkt $content ausgeben.
2) Sicher, dass es mit anonymous überhaupt funktioniert und Dir nicht nur Berechtigungen fehlen?
3) Kamen mit Deinem Skript überhaupt schon mal Daten zurück, z.B. für den Tag?[/quote]
Hallo Thomas Seifert,
vielen Dank für deine Antworten.
Ok, das werde ich am Abend mal testen.
Ja, &token_auth= sowohl mit anonymous als auch mit einem “auth-code”.
Ja, bisher ziemlich alles - außer mit der Date-Range.
Hier einige Test-Beispiel URL-Parameterstrings:
// $url .= "&idSite=1&period=month&date=yesterday"; // dat löppt
// $url .= "&idSite=1&period=year&date=today"; // dat löppt
// $url .= "&idSite=1&period=year&date=2009-12-09&date=today"; // dat löppt
// $url .= "&idSite=1&period=day&date=2009-12-09&date=2009-12-31"; // dat löppt aber nicht richtig
// $url .= "&idSite=1&period=day&date=2009-12-09,2009-12-31"; // dat löppt nicht
// $url .= "&idSite=1&period=week&date=last3"; // dat löppt nicht
// $url .= "&idSite=1&period=week&date=last20"; // dat löppt nicht
// $url .= "&idSite=1&period=day&date=2009-12-09"; // dat löppt Ok für einen Tag
// $url .= "&idSite=1&date=last10&period=day"; // löppt nicht
// $url .= "&idSite=1&date=last52&period=week"; // löppt nicht
// $url .= "&idSite=1&period=day&date=today"; // dat löppt Ok für den akt. Tag
// $url .= "&idSite=1&period=day&date=last2"; // dat löppt nicht
$url .= "&idSite=1&period=day&date=2010-07-19,2010-08-02"; // aus dem Piwik Forum - dat löppt nicht
Genaugenommen bräuchte ich die Range wie folgt:
2009-12-09 = Tag der 1ten Piwik Installation
bis
today = jeweils akt. Tag
Wenn ich den Zeitraum sehe, schon mal ins Error log vom Webserver geschaut, dass er hier nicht vielleicht das memory limit von PHP überschreitet und darum vielleicht einen Fehler zurückliefert?
Nein, am (PHP-) Memory oder am (PHP-) Scriptausführungs Zeit Limit kann es nicht liegen, denn ansonsten würde bzw. müsste es mit deinem Beispiel URL-Parametern bzw. mit meinem bis auf die Range identischem:
$url .= "&idSite=1&period=day&date=2010-07-19,2010-08-02"; // aus dem Piwik Forum - dat löppt nicht
$url .= "&idSite=1&period=day&date=2009-12-09,2009-12-31"; // dat löppt nicht
ja einwandfrei funktionieren, was bekannterweise ja nicht der Fall ist. style_emoticons/<#EMO_DIR#>/wink.gif
[quote=Thomas Seifert @ Aug 3 2010, 07:34 PM]Die 50 am meisten benutzten Suchwörter
ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray[/quote]
Einige von Piwik dokumentierten URL-Parameter funktionieren eigenartigerweise scheinbar nicht mit PHP!
Siehe als Bsp hier:
// $url .= “&idSite=1&period=day&date=last20”; // dat löppt nicht
// $url .= “&idSite=1&period=week&date=last3”; // dat löppt nicht
// $url .= “&idSite=1&period=day&date=today”; // dat löppt
Sind doch alle Daten da. Dein oben verwendetes Skript geht halt nur von einem Tag aus - Du müsstest einfach noch einen zweiten Loop drumherum bauen, etwas in der Art:
foreach($content as $date => $day) {
Keywords for $date<br />
foreach($day as $row)
{
$keyword = urldecode($row['label']);
$hits = $row['nb_visits'];
print("<b>$keyword</b> ($hits hits)<br>");
}
}
Wenn Du Tageswerte anforders (period=day) dann bekommst Du auch für jeden Tag einen Wert.
Aufsummieren müsstest Du selbst im PHP-Code.
[quote=Thomas Seifert @ Aug 4 2010, 06:31 AM]Wenn Du Tageswerte anforders (period=day) dann bekommst Du auch für jeden Tag einen Wert.
Aufsummieren müsstest Du selbst im PHP-Code.[/quote]
Vielen Dank für die Antwort nebst Lösungsvorschlag.
Ja, dass obenstehende von Dir hatte ich nicht bedacht. Deswg. funktionieren auch keine Ausgaben mit z.B.:
date=last20 oder week=last4 oder date=2010-07-01,2010-07-31
Ich werde in Kürze deinen Löscungvorschlag mal anpassen und testen.
[quote=Thomas Seifert @ Aug 4 2010, 06:31 AM]Sind doch alle Daten da. Dein oben verwendetes Skript geht halt nur von einem Tag aus - Du müsstest einfach noch einen zweiten Loop drumherum bauen, etwas in der Art:
foreach($content as $date => $day) {
Keywords for $date<br />
foreach($day as $row)
{
$keyword = urldecode($row['label']);
$hits = $row['nb_visits'];
print("<b>$keyword</b> ($hits hits)<br>");
}
}
Wenn Du Tageswerte anforders (period=day) dann bekommst Du auch für jeden Tag einen Wert.
Aufsummieren müsstest Du selbst im PHP-Code.[/quote]
Hallo Thomas Seifert,
ich habe anhand deines Vorschlags inzwischen etliche Tests durchgeführt. Ergebnis:
Nun werden die Keywords zwar je Datum untereinander ausgegeben, aber eine Aufsummierung habe ich nicht hinbekommen. Da sind wohl meine PHP Kenntnisse zu schwach.