Dateien löschen
Philipp
- php
0 David Tibbe0 Marc Reichelt0 Elessar
Hi!
Ich hab mir einen Counter mit IP-Sperre programmiert.
Um die Prüfung der IP auf vorhanden sein zu prüfen, wird, falls die IP noch nicht vorhanden ist, eine .dat-Datei angelegt, welche die IP als Dateinamen trägt.
Die .dat-Datei ist leer.
Folgendes Problem: Wenn ich 1000 Besucher hab, dann hab ich 1000 IP-Dateien.
Um dies zu verhindern sollen die Dateien nach einer vorgegebenen Zeit (anfangend beim Erstellen der Datei) gelöscht werden.
Meine Fragen:
Danke im Vorraus
Mit freundlichen Grüßen
Philipp
Hallo
Ich hab mir einen Counter mit IP-Sperre programmiert.
Über die Effizienz einer IP-Sperre kannst du dich im Archiv informieren.
Um die Prüfung der IP auf vorhanden sein zu prüfen, wird, falls die IP noch nicht vorhanden ist, eine .dat-Datei angelegt, welche die IP als Dateinamen trägt.
Die .dat-Datei ist leer.
Was spricht gegen eine einzige Datei, in der alle IPs stehen? Ist das nicht übersichtlicher? (Ich weiß nicht, wie das Speicherplatztechnisch aussieht, wäre auch noch eine Überlegung)
- Ist dies mit PHP möglich und wenn ja
Ja, ist es schon.
- Wie muss das Programm aussehen?
Das darfst du selber schreiben :) Es muss in etwa so aussehen:
IP auslesen (wenn möglich!), überprüfen, ob IP schon vorhanden.
ja -> Zeitspanne testen, wenn genug Zeitvergangen ist: Datei löschen, zählen & neu erstellen, sonst nicht weiterzählen
nein -> Datei erstellen & zählen
Aber: Nach ein paar Besuchern hast du unmengen von Dateien auf deinem Server!
Was du noch brauchst:
Dateien löschen: http://php3.de/unlink
Letzter Zugriff auf die Datei: http://php3.de/fileatime
Grüße
David
Hallo
Aber: Nach ein paar Besuchern hast du unmengen von Dateien auf deinem Server!
Ich las dein Postin noch einmal, das war ja dein Problem :)
Also, am besten eine Datei nur anlegen in der die IPs undein Timestamp liegen.
Alternativ: Wenn dein Counter aufgerfen wird, schaust du bei allen Dateien in dem Verzeichnis, ob diese schon zu lange existieren. Ggf. löscht du sie dann.
Grüße
David
Hi!
- Ist dies mit PHP möglich und wenn ja
Ja!
- Wie muss das Programm aussehen?
Das Programm trägt die IP in eine Datei ein, die die IPs als Array enthält (Trennzeichen z.B. ein Komma).
Doppelte Einträge müssen gelöscht werden.
Schließlich verkürzt das Programm das Array auf einen Maximalwert von IPs (100 dürften absolut ausreichen!) und speichert diese anschließend wieder in die Datei.
Falls du Sourcecode haben willst schick mir einfach mal ne email von meiner Homepage aus!
Ich programmiere so etwas nämlich gleich...
cu
Marc Reichelt || http://www.marcreichelt.de/
Hi!
Am Besten ginge es mit Cron-Jobs. Läßt sich aber auch mit PHP realisieren. Zwar nicht so schön, aber es sollte gehen.
Und zwar musst du in eine häufig aufgerufene Datei (Am besten die Startseite) einen Script einbauen, der prüft ob eine (oder mehrere) der 1000 .dat Dateien über der vorgegebenen Zeit liegt. Diese musst du dann automatisch löschen lassen.
Guck mal unter: http://www.php.net/manual/de/ref.filesystem.php und dort unter filemtime und unlink.
Mfg
Elessar