in der datei contenido/includes/functions.stat.php
1. die variable die für $yearmonth übergeben wird funktioniert bei den monaten 1-9 nicht ! der grund ist einfach der das die eintragung des werts bei september zB so aussieht 2003 9 und nicht 200309
d.h die auflistung der archivierten statistiken funktioniert nicht bei diesen monaten. vielleicht liegts ja an meiner php version 4.0.6
ich habe mich jetzt mal damit beholfen und diese zeile eingefügt
$yearmonth = ereg_replace (" ", "0", $yearmonth);
(für mich funktionierts)
2. nach dem das statement
$sql = "DELETE FROM ".$cfg["tab"]["stat"];
ausgeführt wurde werden bei der statistik keine werte mehr eingetragen, da die tabelle con_stats leer ist.
wie wärs die einträge wieder gänzlich neu zu erzeugen und alle werte dieses monats auf 0 zu setzen.
hier mein code um diese beiden mankos zu beheben:
Code: Alles auswählen
function statsArchive($yearmonth)
{
global $cfg, $db;
$yearmonth = ereg_replace (" ", "0", $yearmonth);
$db2 = new DB_Contenido;
$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);
}
$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).",
0 )";
$db2->query($insertSQL);
}
}
das mit pseudo_cron job bei der statistik erstellung funktioniert nur dann wenn am ersten des monats um 0 uhr die website aufgerufen wird. (ähm geil...) auf gut deutsch nette idee mit cronjobs funkt aber net g'scheit.
eine empfehlung:
das einzige was ich empfehlen würde wäre beim aufruf der statistik das monat zu überprüfen - falls die statistik für das vorige monat erstellt wurde soll die statistik wie bis her aufgerufen werden. falls nicht sollte die obrige funktion ausgeführt werden. ist zwar keine 100% saubere lösung würde aber funktionieren.