php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zählen von Tageszugriffen


 
elf7013
30-11-2005, 15:20 
 
Hallo,

ich habe ein Problem mit dem Zählen von Zugriffen pro Tag. Mein Problem liegt eher in meiner Unwissenheit mit dem Umgang mit in Datei gespeicherten Daten.

Als Datengrundlage besitze ich eine datei <datei.dat> in dieser Datei befinden sich Datensätze der Form:

212.204.71.97;;;;;;;;;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0);;;30.11.2005;;;13.08:38
84.167.193.96;;;;;;;;;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1);;;30.11.2005;;;13.11:42
213.196.244.100;;;;;;;;;Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.5) Gecko/20041122 Firefox/1.0;;;30.11.2005;;;13.14:05

Die Daten liegen also strukturiert vor, so dass einzelne Zeileneinträge durch ';;;' getrennt sind.

Ziel ist es ein Skript zu schreiben, dass alle Zugriffe pro Datum aufaddiert:
30.11.2005 XXXX

Mein eigentliches Problem besteht in dem Umgehen mit der Datenbasis.
- Wie öffne ich die Datei?
- Wie erfasse ich die Zeilen?
- Wie vergleiche ich das Datum?


Für eine hinweisende Antwort wäre ich dankbar.

 
schlimmerfinger
30-11-2005, 15:27 
 
http://de.php.net/manual/en/function.fopen.php
http://de.php.net/manual/en/function.fgetcsv.php
http://de.php.net/manual/en/function.split.php
http://de.php.net/manual/en/function.strtotime.php
http://de.php.net/manual/en/function.fclose.php

Kurz gesagt :rtfm:

 
elf7013
30-11-2005, 15:35 
 
Danke für den Hinweis.

 
elf7013
30-11-2005, 15:54 
 
Nachdem ich also die ersten Schritte getan habe:

<?php
$datei = fopen("user.dat", "r");
while (($data = fgetcsv($datei)) !== FALSE)
{

}

?>

Frage ich mich wie ich auf den Datumseintrag zugreifen kann?

1. Wie vermittele ich dem Array in $data, dass die Eintrage durch ";;;" getrennt sind?

 
wahsaga
30-11-2005, 15:57 
 
Original geschrieben von elf7013
1. Wie vermittele ich dem Array in $data, dass die Eintrage durch ";;;" getrennt sind?
Dass die Eingabezeile dieses Format hat, sollte doch fgetcsv() bereits berücksichtigt haben.

Vielleicht liest du mal ein bisschen gründlicher im Manual nach, was Funktionen machen, und was sie zurückgeben.
Und vielleicht schaust du die auch mal die Struktur eines solchen Rückgabewertes mit print_r() oder var_dump() an.

 
elf7013
30-11-2005, 16:11 
 
Ich habe mal den folgenden Code getestet, die user.dat liegt dabei im gleichen Verzeichnis wie die php-Datei:

<html>
<head><title></title></head>
<body>

<?php
$datei = fopen("user.dat", "r");
while (($data = fgetcsv($datei)) !== FALSE)
{
$num = count($data);
for ($c=0; $c < $num; $c++)
{echo $data."\n";}
}

?>

</body>

Dies verursachte folgendes:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, ... and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

--------------------------------------------------------------------------------
Apache/1.3.33 Server at www.fernuni-hagen.de Port 80

 
schlimmerfinger
30-11-2005, 17:01 
 
Kommisch. Probier mal das hier.
$datei = fopen("user.dat", "r");
while (($data = fgetcsv($datei, 1000, ';')) !== FALSE)
{
var_dump($data);
}

 
elf7013
30-11-2005, 17:18 
 
Habe ich gerade ausprobiert erzeugt die gleiche Meldung.

 
schlimmerfinger
30-11-2005, 17:20 
 
Die eMail-Adresse des Administrators ist ja bekannt...

 
elf7013
30-11-2005, 18:32 
 
Könnte es problematisch sein, dass ich zur Zeit direkt im CGI-BIN operiere?

Glaube dies zwar nicht, aber zZ scheine ich mich eh nicht mehr zu erinnern :confused:

 
schlimmerfinger
30-11-2005, 18:40 
 
Möglich ist es, aber sicher bin ich mir im mom auch nicht. Es gibt aber nur eine Möglichkeit es zu testen...

 
elf7013
30-11-2005, 18:43 
 
Nein daran liegt es auch nicht.
Muss mich dann also mal erkundigen wie die Einstellungen aussehen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:05 Uhr.