hvordan finder og sletter jeg filer som er over 3 timer gamle

Tags:    php

Jeg har en temp-mappe hvor filer bliver uploadet til og hvis brugeren på en eller anden måde afslutter halvvejs i en process, så ligger der bare nogle filer og fylder mere og mere på min server. Jeg vil høre om i har en løsning enten

1) ved at medtage filen igennem 2-3 submit-tingester og derefter gemme filen det rette sted!

2) hvordan jeg kan slette filer som er ældre end 3 timer i min temp mappe.

Jeg håber der findes nogen der kan hjælpe mig, for jeg har opgivet selv! :-)

Men det plejer jo at lykkes når bare man får lidt sparring fra nogle mere erfarne eller kreative hoveder :-)

Michael



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
hvad med noget i retning af


$t=time();
if ($handle = opendir('test/'))
{
while (false !== ($filename= readdir($handle)))
{
if(!is_file($filename))continue;
if($t>(filemtime($filename)+3600))
{
unlink($filename)
}
}
closedir($handle);
}

-----------------------------------------------------------------------------
Min side ->www.the-hive.dk/~donp/



Du kan også lægge filerne op i en temp mappe til at starte med. Til slut i det brugeren skal, flytter du så filen over i den mappe hvor den skal ligge. Det vil sige, at alle de filer der ligger i temp ikke har en ejer og kan slettes. Ulempen er dog, at du kan komme til at slette en fil fra en bruger der er igang på din side - men så kan du vælge et tidspunkt hvor der ikke er nogen online.

Ellers kan du evt. vente med din upload indtil det sidste skridt i det brugere skal.



Du kan også lægge filerne op i en temp mappe til at starte med. Til slut i det brugeren skal, flytter du så filen over i den mappe hvor den skal ligge. Det vil sige, at alle de filer der ligger i temp ikke har en ejer og kan slettes. Ulempen er dog, at du kan komme til at slette en fil fra en bruger der er igang på din side - men så kan du vælge et tidspunkt hvor der ikke er nogen online.

Ellers kan du evt. vente med din upload indtil det sidste skridt i det brugere skal.


Er det slet ikke muligt at sende filen gennem 2-3 post's???





// Her slettes filer der vhar lagt i temp-mappen i over 6 timer
$t=time();
if ($handle = opendir('../upload/temp/')){ //sæt evt @ foran opendir
while (false !== ($filename= readdir($handle))){
if(!is_file($filename))continue; //hvad sker der her ? continue?
if($t>(filemtime($filename)+21600)){
unlink($filename);
}
}
closedir($handle);
}

// hvilket resultat kunne filemtime($filename))+21600 feks gi?
// hvilket resultat giver time() ?
//ligner de hinanden? er der dato med eller er det alene klokken?
----------------------------------------------------------------------------
Spændende!

Jeg tror faktisk ik helt det virker når jeg tænker lidt over det, for time() er nok ikke det rette valg sammen med filemtime().. hmm.. Der kommer til at opstå problemer hvis der feks er gået 25 timer bliver den ikke slettet. Og så vidt jeg forstår giver de to funktioner forskellige output. sidst men ikke mindst så har jeg brugere fra flere tidszoner, hvilket måske også bliver lidt underligt. Men jeg tror bare, ved det ik! :-)

Michael

[Redigeret d. 29/07-04 16:14:43 af Michael Hjulskov]



Du kan også lægge filerne op i en temp mappe til at starte med. Til slut i det brugeren skal, flytter du så filen over i den mappe hvor den skal ligge. Det vil sige, at alle de filer der ligger i temp ikke har en ejer og kan slettes. Ulempen er dog, at du kan komme til at slette en fil fra en bruger der er igang på din side - men så kan du vælge et tidspunkt hvor der ikke er nogen online.

Ellers kan du evt. vente med din upload indtil det sidste skridt i det brugere skal.


Det har jeg stort set gjort nu! men jeg mangler stadig at lave et script der sletter filer ældre end X timer i min temp-mappe.



t