Frage zur Statistik

Gesperrt
KrissKrass
Beiträge: 86
Registriert: Mi 2. Jun 2004, 16:01
Wohnort: Bochum
Kontaktdaten:

Frage zur Statistik

Beitrag von KrissKrass » Mi 29. Okt 2008, 12:43

Hallo zusammen,

ja ich habe die Suchfunktion genutzt und eigentlich schon alle Lösungen erhalten, jedoch habe ich noch eine Verständnisfrage:

Wenn ich

Code: Alles auswählen

0 0 1 * * move_old_stats.php
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

Code: Alles auswählen

0 0 1 * * move_old_stats.php
gegeben sein. Oder?

Freue mich auf Antworten bzw. kurze Erläuterungen ob ich das so richtig verstanden habe. Danke.

mfweb
Beiträge: 270
Registriert: Mo 12. Sep 2005, 18:31
Kontaktdaten:

Beitrag von mfweb » Mi 29. Okt 2008, 20:09

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

KrissKrass
Beiträge: 86
Registriert: Mi 2. Jun 2004, 16:01
Wohnort: Bochum
Kontaktdaten:

Beitrag von KrissKrass » Di 4. Nov 2008, 15:09

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

Code: Alles auswählen

0 0 1 * * move_old_stats.php
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

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Beitrag von Oldperl » Mi 5. Nov 2008, 09:11

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
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

KrissKrass
Beiträge: 86
Registriert: Mi 2. Jun 2004, 16:01
Wohnort: Bochum
Kontaktdaten:

Beitrag von KrissKrass » Mi 5. Nov 2008, 12:34

Hallo Ortwin,

danke für die Antwort. Nun verstehe ich die Zusammenhänge.
In der "move_old_stats.php" wird die Funktion

Code: Alles auswählen

statsArchive()
(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

Code: Alles auswählen

statsArchive()
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

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Beitrag von Oldperl » Mi 5. Nov 2008, 13:31

Hallo Christoph,

wenn ich das so überfliege sollte es gehen :roll:
Probier mal die "move_old_stats.php" direkt im Browser aufzurufen, sollte dann deine Statistik jedes mal zurücksetzen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

KrissKrass
Beiträge: 86
Registriert: Mi 2. Jun 2004, 16:01
Wohnort: Bochum
Kontaktdaten:

Beitrag von KrissKrass » Mi 5. Nov 2008, 21:27

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

Gesperrt