php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.06.2004, 10:39  
Gast
 
Beiträge: n/a
Standard Dateien in einem Ordner automatisch löschen.

Hi, also ich hab ein Besucher Script, welches die IP in den Ordner IP speichert, für die IP Sperre des Counters.. Nun, würde ich gerne diesen Ordner z.B. alle 3 Tage 1x löschen lassen mit einem Script.. Kann mir jemand sagen wie ich das umsetzen kann?

Code:
<?php 
//Liest die Ip aus!// 
$ip = getenv ("REMOTE_ADDR"); 
//Überprüfen ob $ip.ip schon erstellt ist// 
if( file_exists("ip/$ip.ip")) 
{ 
    //Liest in den Array "lesaus" die datei user_gesamt.dat ein// 
    $lesaus =  file("user_gesamt.dat"); 
    //Gibt den Array "lesaus" aus// 
    echo"$lesaus[0]";   
} 
    //Ab hier beginnt die Verneinung// 
else 
{ 
    //Liest die datei user_gesamt.dat wieder in einen Array aus// 
    $lesaus =  file("user_gesamt.dat"); 
    //Der Ausgelsende Wert wird um 1 erhöt// 
    $lesaus[0]++;   
    //Die Datei user_gesamt.dat wird geöffnet// 
    $datei =  fopen("user_gesamt.dat","r+"); 
    //Der Variable $datenm wir der Ausgelsende ( und um 1erhöte) Wert zugeteilt// 
    $datenm="$lesaus[0]";   
    //Der Datenzeiger wird wieder an den Anfang zurückgesetzt// 
     rewind($datei); 
    //Der Wert der variable $datenm wird in die Datei geschrieben// 
     fwrite($datei,$datenm); 
    //Die Datei wird geschlossen// 
     fclose($datei); 
    //Der Wert der vorhin um 1 erhört wurden ist,wird ausgegeben// 
    echo"$lesaus[0]"; 
    //Die Datei $ip.ip wird im Modus 'w+' erstellt// 
    $file =  fopen("ip/$ip.ip","w+");   
    //Der Variable $datenm wird der wert $ip zugewiesen// 
    $datenm="$ip";   
    //In die Datei wird die Variable $ip geschrieben// 
     fwrite($file,$datenm); 
    //Die Datei wird geschlossen// 
     fclose($file); 
} 
?>
Danke
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.06.2004, 11:28  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Mit unlink kannst du Dateien löschen. Jetzt musst du nur noch das Verzeichnis auslesen und alle Dateien löschen. Dazu findest du in der Forumssuche etwas.

Oder du nimmst das erste Beispiel von hier:
http://de.php.net/manual/de/function.rmdir.php

mfG
werbegeschenk
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 17.06.2004, 11:37  
Gast
 
Beiträge: n/a
Standard

Hm..
Ja, aber wie lösche ich das jetz alles alle 3 Tage 1x ..?
 
Alt 17.06.2004, 12:22  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von bluestoke
Hm..
Ja, aber wie lösche ich das jetz alles alle 3 Tage 1x ..?
Du könntest dir dafür einen Cronjob anlegen....

Oder einfacher:
Speichere nach jedem löschen in einer Datei den Timestamp. Jedesmal wenn die Seite aufgerufen wird kannst du ja jetzt den gespeicherten Timestamp mit dem aktuellen vergleichen und checken ob schon 3 Tage vergangen sind. Falls ja: Verzeichnis löschen und neuen Timestamp in die Datei schreiben. Falls nein: nichts machen.
(Das würde zwar jetzt nicht haargenau alle 72h passieren, aber das macht ja nix)

mfG
werbegeschenk
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 17.06.2004, 12:58  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

Hallo bluestoke,

ich habe mir einmal Gedanken zu einem Ablauf zum Löschen in Zeitintervallen von 3 Tage gemacht:

Du kannst mit einer select-Abfrage den aktuellen Timestamp abfragen (DB-Lösung) oder aber ohne DB (spätere Speicherung in session). Diesen aktuellen Timestamp speicherst Du in eine Session-Variable $x (oder aber DB-Lösung: Eintrag in DB-Tabelle). Beim nächsten Aufruf fragst Du ab, ob der noch gespeicherte Wert der Session-Variable $x oder aber der Eintrag in der DB (mit select-abfrage) <3 Tage des aktuellen Timestamps ist. Ist dies der Fall, so tritt hier Deine Löschfunktion in Kraft. Sollte dies nicht der Fall sein, so wird nichts gelöscht.

Tage können von einem Datum, das in einer DB-Tabelle steht auf folgende Art und Weise abgezogen werden:
Code:
SELECT DATE_SUB("1998-01-02", INTERVAL 3 DAY);
... oder hinzuaddiert werden:
Code:
SELECT DATE_ADD("1997-12-31 23:59:59",
                       INTERVAL 3 DAY);
Für "1998-01-02" kann auch eine Variable eingesetzt werden.
http://dev.mysql.com/doc/mysql/de/Da...functions.html
http://de.php.net/session

Da es ja viele, viele Besucher geben kann, würde ich aus Performancegründen zu der DB-Lösung tendieren.

greetz,

kamalo
Hakima ist offline  
Alt 17.06.2004, 13:26  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Werbegeschenk
Du könntest dir dafür einen Cronjob anlegen....
Hallo Werbegeschenk,
hallo bluestoke,
o.k., an Cronjob habe ich nicht gedacht. Aber das wäre ja eine Ergänzung wert? Es könnte zusätzlich ein automatisches Aufrufen des Scripts über Cronjob erfolgen... damit in regelmässigen Abständen gelöscht werden kann, oder aber durch Erstellen eines Scriptes.

Kamalo
Hakima ist offline  
Alt 19.06.2004, 14:24  
Gast
 
Beiträge: n/a
Standard

Was ist denn ein CronJob und wie lege ich so einen an?
In html kenn ich mich ja sehr gut aus, aber insachen php habe ich erst angefangen.

Aber das mit dem löschen brauch ich jetz eigentlich nicht mehr.
Ich speichere alle ips von meinen besuchern in einer ip.dat
da steht: &&"ID"&&"IP"
&&"ID"&&"IP"
und sobald 200 Einträge da sind, überschriebt es einfach die ersten wieder, so fällt das löschen weg ;-)

Aber in Sachen Datum und Zeit habe ich Probleme.
Ich versuche die Besucher Heute und Gestern zu ermitteln,
doch ich weiss einfach nicht wie ich das anstellen soll.
Hat einer von euch ein Beispiel ?

Grüsse
 
Alt 19.06.2004, 20:15  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

ein Cronjob ist, - hoffentlich erklär ich das jetzt richtig - ich beschreibe mal einfach, was ich dazu denke: ein automatisierter Vorgang (beispielsweise zum Überprüfen von Aktionen des Servers), hervorgerufen durch ein automatisches Aufrufen (serverseitig) eines Scriptes. Ein konkretes Beispiel kann ich Dir jetzt nicht dafür geben. Eine Beschreibung zum Fall eines Serverausfalls findest Du hier. Dort gibt es auch ein Beispiel: -na ja, für den Fall eines Serverausfalls, wie gesagt:
http://www.tutorials.de/tutorials157669.html

... für eine Prüfung des Datums könnte folgendes Erfolg haben:
Code:
$dname ='datum.php'; 
// ermittelt Datum der Datei datum.php ab addiert 3600 hinzu
$ddatei= filemtime($dname); 
$dheute=time(); 
$ddatei = $ddatei + 3600; 
// ermitteltes Datum + 3600 kleiner aktuelles Datum?
if ($ddatei < $dheute) 
{ 
include('cron.php');
// dann includiere cron.php (Ausführdatei) 
touch($dname); 
}
Gruß,

kamalo
Hakima ist offline  
Alt 19.06.2004, 21:42  
Gast
 
Beiträge: n/a
Standard

PHP selber wird ja nur ausgeführt wenn mans aufruft.
Ein Cronjob wird der von alleine immer kontinuierlich ausgeführt?
 
Alt 20.06.2004, 03:02  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

Zitat:
PHP selber wird ja nur ausgeführt wenn mans aufruft.
Das ist richtig, es gibt noch zusätzlich eine Möglichkeit, daß der Server in bestimmten Zeitabständen ein Script aufruft, das dann gewünschte Aktionen (regelmässig und dadurch automatisiert) durchführt. Dieses Verfahren wird Cronjob genannt (auf jeden Fall im Unix/Linux Netzwerkbereich). Der Cronjob wird vom Server angestoßen.
- Sehe ich das falsch, so verbessert mich bitte. Es müßte hier jede Menge Fachliteratur geben. Beispielsweise behandelt dieses Forum auch Linux-Server-Themen.
Außerdem ist in dem von mir genannten Link beschrieben:
Voraussetzung für den Einsatz: Hosting-Angebot mit PHP4 und Möglichkeit, Cron Jobs zu starten. =>Da müßtest Du Dich bei Deinem Webhoster informieren...

Soviel von meiner Seite zu Cronjobs.

Der Wert, auf den ich mich weiter oben im Beispiel beziehe:
Code:
$ddatei = $ddatei + 3600;
Dazu habe ich versäumt zu erwähnen daß der Zeitstempel in Sekunden gemessen wird, 3600/60=60Minuten. 60Minuten=1Stunde, 3 Tage=72 Stunden. 72x3600=259200Sekunden. Diese Sekundenzahl sollte im Beispiel genutzt werden, um den Datumswert von 3 Tagen zu vergleichen...

Der Zeitstempel wird mit sicherlich gut in vielen Handbüchern beschrieben...
http://www.webmaster-resource.de/tut...utorial_17.php
Zitat:
time:
Die Funktion time gibt den aktuellen Unix-Zeitstempel (Unix-Timestamp) zurück. Dieser gibt die seit Beginn der UNIX-Epoche (01.01.1970 00:00:00 GMT) bis jetzt vergangenen Sekunden zurück.
Gruß,

kamalo
Hakima ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] script das html dateien aus einem bestimmten ordner listet PHP Tipps 2004 16 09.05.2009 18:52
Wie Dateien im Ordner auflisten ? fdm PHP Tipps 2008 5 27.07.2008 20:00
[Erledigt] ordner rechte setzen sich automatisch zurück wiegia086 PHP-Fortgeschrittene 1 05.04.2008 13:55
Ordner inkl. aller Unterordner und Dateien verschieben? BartTheDevil89 PHP Tipps 2008 6 14.02.2008 08:45
TreeMenu Fatal Error PHP Tipps 2006 8 07.04.2006 11:22
Unter ordner und Files automatisch auslesen lichtscheu PHP Tipps 2006 6 09.03.2006 19:19
Ordner fehler? und Dateien zusammenfassen PHP Tipps 2006 4 09.03.2006 10:42
Anzahl der Dateien in einem Ordner zählen PHP Tipps 2006 4 16.01.2006 20:44
Dateien aus einem Ordner einlesen ??? PHP Tipps 2005-2 4 07.08.2005 18:21
Dateien aus einem Ordner löschen PHP Tipps 2005-2 14 13.06.2005 21:27
Dateien aus beliebigem Ordner packen ?? nsane PHP-Fortgeschrittene 2 10.12.2004 21:42
Dateien aus Ordner andersherum auslesen nsane PHP Tipps 2004-2 1 08.12.2004 17:29
Alle Dateien im Ordner anzeigen Sirke PHP Tipps 2004 10 14.09.2004 17:36
WebFTP: php denkt die ordner wären dateien... phpfortgeschrittener PHP Tipps 2004 15 09.08.2004 18:38
ordner und dateien mit php anzeigen...wie? phpfortgeschrittener PHP Tipps 2004 5 04.08.2004 22:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cronjob ordner leeren, cronjob verzeichnis leeren, cronjob ordner löschen, cronjob verzeichnis löschen, http://www.php.de/php-tipps-2004/3185-dateien-einem-ordner-automatisch-loeschen.html, ordner automatisch löschen, ordner automatisch leeren, crontab ordner löschen, cronjob ordner inhalt löschen, linux cronjob verzeichnis löschen, verzeichnis automatisch leeren alle tage, php ordner leeren, datei automatisch aller 10 tage löschen, cron verzeicnisinhalt löschen, linux cronjob packen und löschen, dateien im intervall löschen, script cronjob ordner leeren, cron job verzeichnis leeren, php-script alle dateien in einem ordner löschen, php ordner automatisch löschen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.