Seite 1 von 1

Seitenaufrufe des Headers zählen

Verfasst: 18.08.2003 18:07
von Seether
Hi.
Ich will die Seitenaufrufe von page_header zählen, so dass ich weiß wie viele Seitenaufrufe das Forum täglich hat.
Funktionen dafür habe ich schon, aber mir kommt es dabei besonders auf Performance an, will nicht die Lagezeit verzögern.

Wäre nett wenn jemand eine Idee hätte.

S.

Verfasst: 19.08.2003 10:19
von Seether
Habe natürlich das wichtigste vergessen :D

Es soll für jeden Tag eine neue Spalte in der DB angelegt werden.


S.

Verfasst: 19.08.2003 23:31
von Dwing
wenn du die Ladezeit nicht so verzögern willst würd ich das machen.
in die page_header.php

Code: Alles auswählen

// Dateizuweisung
$file = './logs/' . date('w-d-Y) . '.txt';

// Erstellt/Öffnet die Datei
$ftp = @fopen($file,"a+"); 

// Holt die ersten 10 Zeichen
$count = (int)fgets($ftp,10);

// Addiert eine 1
$count++;

rewind($ftp); 

// Schreibt den neuen Wert
fwrite($ftp,$count);

// Schließt die Datei
fclose($ftp); 

// include($file);

Erstell ein Verzeichnis /logs, chmodde es auf 777 und erstell in dem Verzeichnis noch ne leere index.htm und ne .htaccess mit dem Inhalt

Code: Alles auswählen

deny from all

So wird für jeden Tag eine Textdatei erstellt, die anzeigt wie viele Seitenaufrufe es an dem jeweiligen Tag gab.

Verfasst: 20.08.2003 09:21
von Pyramide
Eine Datei sollte man dafür nicht verwenden. Erstens ist das nicht so schnell wie eine Datenbank und zweitens können bei gleichzeitigem Zugriff entweder einzelne Zugriffe nicht gespeichert werden oder sogar die komplette Datei geleert werden.

Stattdessen solltest du eine Datenbank verwenden, z.B:

Code: Alles auswählen

CREATE TABLE counter(
    tag tinyint NOT NULL,
    monat tinyint NOT NULL,
    jahr tinyint NOT NULL,
    aufrufe int NOT NULL default 1,
    PRIMARY KEY(tag, monat, jahr)
);

Code: Alles auswählen

$sql = 'UPDATE counter SET aufrufe=aufrufe+1 WHERE tag=' . date('j') . ' AND monat=' . date('n') . ' AND jahr=' . date('Y');
if(!$db->sql_query($sql)) {
    message_die(GENERAL_ERROR, 'geht nich', '', __FILE__, __LINE__, $sql);
}
if($db->sql_affectedrows() == 0) {
    $sql = 'INSERT INTO counter (tag, monat, jahr) VALUES (' . date('j') . ', ' . date('n') . ', ' . date('Y') . ')';
    if(!$db->sql_query($sql)) {
        message_die(GENERAL_ERROR, 'geht nich', '', __FILE__, __LINE__, $sql);
    }
}
Dann kannst du auch noch jede Menge Statistiken abfragen, z.B.
  • SELECT avg(aufrufe) FROM counter
  • SELECT sum(aufrufe) FROM counter WHERE monat=x AND jahr=y
  • SELECT monat, jahr, sum(aufrufe) FROM counter GROUP BY monat, jahr