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.
Seitenaufrufe des Headers zählen
wenn du die Ladezeit nicht so verzögern willst würd ich das machen.
in die page_header.php
Erstell ein Verzeichnis /logs, chmodde es auf 777 und erstell in dem Verzeichnis noch ne leere index.htm und ne .htaccess mit dem Inhalt
So wird für jeden Tag eine Textdatei erstellt, die anzeigt wie viele Seitenaufrufe es an dem jeweiligen Tag gab.
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);
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.
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:
Dann kannst du auch noch jede Menge Statistiken abfragen, z.B.
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);
}
}
- 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