Seitenaufrufe des Headers zählen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Seether
Mitglied
Beiträge: 1446
Registriert: 10.10.2002 23:42

Seitenaufrufe des Headers zählen

Beitrag 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.
Seether
Mitglied
Beiträge: 1446
Registriert: 10.10.2002 23:42

Beitrag von Seether »

Habe natürlich das wichtigste vergessen :D

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


S.
Dwing
Ehrenadmin
Beiträge: 1965
Registriert: 17.06.2001 02:00

Beitrag 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.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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
Antworten

Zurück zu „Coding & Technik“