Zeitversetztes Löschen von Datei
William
- php
Hallo,
ist es möglich mit PHP automatisch eine Datei nach einer gewissen Zeit zu löschen.
Beispielsweise möchte ich, dass eine Datei, 10 minuten, nach dem eine Seite aufgerufen wurde gelöscht wird. (Auch wenn die Seite bis dahin geschlossen wurde.)
Ist das möglich mit PHP? (Und wenn ja, wie?) Wenn es nicht möglich ist, wie könnte man soetwas erreichen?
Vielen Dank schon mal im Voraus.
William
Hallo!
Ist das möglich mit PHP? (Und wenn ja, wie?) Wenn es nicht möglich ist, wie könnte man soetwas erreichen?
Du könntest beim Aufruf der Seite den aktuellen Timestamp bzw den Timestamp für die Zeit in 10 Minuten evtl auch den gewünschten Dateinamen in einer Datei / Datenbank speichern. Dann richtest du einen Cronjob ein der alle 10 Minuten oder so wie du es haben willst ausgeführt wird. Die Cronjob Datei prüft ob schon entsprechen viel Zeit verstrichen ist und löscht dann die gewünschte Datei. Ob du überhaupt die Rechte zum Löschen hast musst du selber herausfinden.
Falls Du keine cronjobs zur Verfuegung hast geht das nicht so einfach. Da brauchst Du nen workaround und laesst Deine Besucher die Arbeit fuer dich machen:
Du machst es, wie Snafu erklaert hat und speicherst irgendwo, was wann geloescht werden kann. Bei jedem Aufruf deiner Seiten schaust du nach ob es etwas gibt, das ueberfaellig ist und loescht es.
Gruss
Hello William,
das funktioniert genau dann äußerst präzise, wenn Du mittels exec() einen PHP-Prozess abspalten kannst. Dafür benötigst Du erstens die Rechte für das Ausführen der Shellbefehle und zweitens den PHP-Interpreter als CLI ebenfalls mit Ausführrechten.
Dem in den Hintergrund gestellten PHP-Prozess gibst Du nun die Aufgabe, auf die Session des Users aufzupassen. Wenn die Session verschwunden ist, oder in der Session-Datei ein Schalter umgelegt wurde, wird die zum Prozess gehöreende Datei (die automatisch gelöscht werden sollte) gelöscht und er Prozess beendet.
Ich hoffe, Du konntest mir folgen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom