webForumDet fria alternativet

Automatiskt radera en uppladdad fil efter en viss tid

PHP

4 svar · 874 visningar · startad av Timmpann

Medlem sedan feb. 201019 inlägg
Frågan#1

Hej!

Finns det något sätt att automatiskt radera filer som man laddat upp till servern via en php form? Om jag t ex vill att en uppladdad fil ska raderas en vecka efter att den laddades upp.
Är det möjligt att fixa? Hur gör jag då?
Finns det olika tekniker? Vilken är då smidigast om man ska hantera tiden för många filer?

Tack på förhand och god fortsättning! :)

Medlem sedan jan. 2005953 inlägg
#2

Antingen skapar du ett cronjob som körs med ett visst intervall som anropar ett PHP-script där du kollar vilket datum varje fil har skapats. Om det är mer än X dagar, radera filen.

Eller, om det inte rör sig om så stor mängd filer så kanske det räcker att köra kontrollen i samma script som hanterar uppladdningar. När en fil laddas upp så passar du samtidigt på att kontrollera om det finns filer som är äldre än X dagar, och i så fall raderar dem.

Medlem sedan feb. 201019 inlägg
#3

Tack för svaret!

Hur är då ett php-script som raderar gamla filer uppbyggt? Jag är ganska ny med php, har bara gjort en hemsida som använder php och där tog jag rätt mycket hjälp från en kompis som har mer erfarenheter. Jag lär mig sakta men säkert. :)

Medlem sedan jan. 2005953 inlägg
#4

Först loopar du igenom alla filer i uppladdningsmappen. Detta finns det lite olika sätt att göra på, t.ex. scandir(), glob() eller opendir() + readdir() (exempel finns i manualsidorna för dessa funktioner).

I loopen kontrollerar du när den aktuella filen senast ändrades med funktionen filemtime() (exempel finns i manualen).

Om filens ålder är större än X dagar så raderar du filen med funktionen unlink() (exempel finns i manualen).

Nu behöver du bara ta den här informationen och skriva scriptet ;)
Gör ett försök, misslyckas du så posta din kod här så är vi säkert flera som kan knuffa dig i rätt riktning :)

Medlem sedan juli 2004144 inlägg
#5

Du kan även med fördel spara filens timestamp i filnamnet, eller hålla koll på dem via en databastabell. För ett mer stabilt script än att förlita sig på filsystemets tidsstämpel.

244 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)