Seite 1 von 1
Frage zur Statistik
Verfasst: Mi 29. Okt 2008, 12:43
von KrissKrass
Hallo zusammen,
ja ich habe die Suchfunktion genutzt und eigentlich schon alle Lösungen erhalten, jedoch habe ich noch eine Verständnisfrage:
Wenn ich
aus der Cronjobübersicht lösche, dann archiviert er ja die Statistik nicht mehr, richtig?
Ist es dann also so, dass unter dem Link "Aktuelle Statistik" im Backend immer nur die Aufrufe des jetzigen Monats angezeigt werden und die Statistik im kommenden Monat wieder bei Null beginnt?
Hintergrund meiner Frage: Ich möchte die interne Statistik von Contenido eigentlich nicht benutzen, da ich andere Logsysteme am Laufen habe. Da ich jedoch ein Modul schreiben will in dem die meist geklickten Artikel des laufenden Monats angezeigt werden sollen, wäre für mich die Funktion der "Aktuellen Statistik" interessant. Allerdings nur, wenn die Klickzählung in jedem Monat neu beginnt. Ist dem so?
Somit würde ich also die aktuelle Statistik gerne nutzen, jedoch die Monate nicht archivieren und das müsste dann doch durch das Entfernen von
gegeben sein. Oder?
Freue mich auf Antworten bzw. kurze Erläuterungen ob ich das so richtig verstanden habe. Danke.
Verfasst: Mi 29. Okt 2008, 20:09
von mfweb
Hallo,
die "Aktuelle Statistik" enthält immer die Klicks des laufenden Monats, auch wenn die Archivierung aktiv ist, und wird in der Tabelle con_stat gespeichert. Das ist also genau das, was du willst.
Aber was spricht dagegen, die Statistiken trotzdem zu archivieren, bzw. was stört daran?
Grüße,
mfweb
Verfasst: Di 4. Nov 2008, 15:09
von KrissKrass
Aber was spricht dagegen, die Statistiken trotzdem zu archivieren, bzw. was stört daran?
Ansich spricht natürlich nichts dagegen, allerdings nutze ich wie gesagt andere Logsysteme und die Archivierung der Statistik in Contenido würde meine Datenbankfüllen, ohne das ich sie wirklich brauche. Da mein Projekt recht groß ist, versuche ich natürlich soweit es geht auf Features die ich nicht nutze zu verzichten um Speicher und Traffic zu sparen. So wie eben die Archivierung!
Das heißt also abschließend nun, ich lösche
aus der Cronjob-Datei und das bewirkt nur, dass die Statistik nicht mehr archiviert wird. Zählen tut sie wie gewohnt, nur eben jeden Monat neu und die Daten aus dem alten Monat verfallen dann. Richtig?
Lieben Gruß
Christoph
Verfasst: Mi 5. Nov 2008, 09:11
von Oldperl
Hallo Christoph,
nein das ist so nicht richtig. Der Cronjob verschiebt nur alle älteren Einträge in der Tabelle con_stat in die Tabelle con_stat_archiv.
Das heißt ein Auskommentieren oder Löschen des Jobs ändert nichts an dem "Aufblähen" deiner DB, es wird halt nur in einer DB-Tabelle immer weiter eingetragen und nur diese wächst.
Um dieses auf deine Bedürfnisse zu ändern müßte der CronJob umgeschrieben werden, so das er die Einträge nicht verschiebt, sondern in der Tabelle con_stat löscht. Damit wäre dann die Archivierung abgeschaltet.
Gruß aus Franken
Ortwin
Verfasst: Mi 5. Nov 2008, 12:34
von KrissKrass
Hallo Ortwin,
danke für die Antwort. Nun verstehe ich die Zusammenhänge.
In der "move_old_stats.php" wird die Funktion
(contenido/includes/functions_stat.php) aufgerufen, die den aktuellen Monat nach Ablauf in das Archiv verschiebt und eine neue leere Statistik erstellt.
Wenn ich die Funktion wie folgt anpasse, bzw. das Verschieben durch Auskommentieren deaktiviere, sollte er nun am Ende eines Monats eine neue leere Statistik erstellen, jedoch die aktuelle nicht ins Archiv verschieben. Die Funktion
sieht bei mir nun so aus:
Code: Alles auswählen
function statsArchive($yearmonth)
{
global $cfg;
$yearmonth = ereg_replace (" ", "0", $yearmonth);
$db = new DB_Contenido;
$db2 = new DB_Contenido;
// Ab hier auskommentiert //
/*$sql = "SELECT
idcatart, idlang, idclient, visited, visitdate
FROM
".$cfg["tab"]["stat"];
$db->query($sql);
while ($db->next_record())
{
$insertSQL = "INSERT INTO
".$cfg["tab"]["stat_archive"]."
( idstatarch, archived, idcatart, idlang, idclient, visited, visitdate)
VALUES
(".$db2->nextid($cfg["tab"]["stat_archive"]).",
".$yearmonth.",
".$db->f(0).",
".$db->f(1).",
".$db->f(2).",
".$db->f(3).",
'".$db->f(4)."')";
$db2->query($insertSQL);
}*/
// Bis hier auskommentiert //
$sql = "DELETE FROM ".$cfg["tab"]["stat"];
$db->query($sql);
// Recreate empty stats
$sql = "SELECT
A.idcatart,
B.idclient,
C.idlang
FROM
".$cfg["tab"]["cat_art"]." AS A INNER JOIN
".$cfg["tab"]["cat"]." AS B ON A.idcat = B.idcat INNER JOIN
".$cfg["tab"]["cat_lang"]." AS C ON A.idcat = C.idcat ";
$db->query($sql);
while ($db->next_record())
{
$insertSQL = "INSERT INTO
".$cfg["tab"]["stat"]."
( idstat, idcatart, idlang, idclient, visited )
VALUES (
".$db2->nextid($cfg["tab"]["stat"]).",
".$db->f(0).",
".$db->f(2).",
".$db->f(1).",
'0000-00-00 00:00:00')";
$db2->query($insertSQL);
}
}
Das sollte mir doch nun mein gewünschtes Ergebnis bringen und ich muss an dem eigentlichen Cronjob doch nichts mehr verändern, oder?
Freue mich über eine Rückmeldung bzw. den Hinweis ob ich das so richtig verstanden und umgesetzt habe.
Liebe Grüße,
Christoph
Verfasst: Mi 5. Nov 2008, 13:31
von Oldperl
Hallo Christoph,
wenn ich das so überfliege sollte es gehen
Probier mal die "move_old_stats.php" direkt im Browser aufzurufen, sollte dann deine Statistik jedes mal zurücksetzen.
Gruß aus Franken
Ortwin
Verfasst: Mi 5. Nov 2008, 21:27
von KrissKrass
Hallo Ortwin,
es hat genau so geklappt wie ich es wollte... Der Cronjob löscht nun nur noch die aktuelle Statistik und archiviert diese nicht. Somit kann ich also nun beginnen, mein entsprechendes Modul zu programmieren.
Ich danke dir vielmals für die kompetente und schnelle Hilfe!
Liebe Grüße
Christoph