Autor Zpráva
TeeVee
Profil *
Dobrý den,

chtěl bych se zeptat, zda-li je vůbec možné odmazávat postupem času soubory staré třeba 3 dny. Uvedu příklad:

Z webkamery se mi sypají každých 20 vteřin aktuální fotky na moje FTP, kde se pak skladují. Když bude kamera stále odesílat, za pár dní tam bude třeba 10 000 fotek - což zabere strašně moc místa. Proto bych potřeboval nějaký script nebo funkci, která by rozpoznala soubor starší třeba 3 dnů a automaticky by ho smazala. Tím budu mít na FTP pouze fotky za poslední 3 dny a nebudu muset FTP promazávat sám. Script by se pak dal do CRONu například s hodinovým intervalem, takže by se postaralo o odmazání starých (již nepotřebných fotek).

Znáte nějakou funkci nebo teoretický postup, jak navrhnout tento script?

Díky :-)
Majkl578
Profil
Podívej se na funkci filemtime.
TeeVee
Profil *
No, nejsem z toho dvakrát tak moudrý, ale z toho co jsem tak pochopil je tato funkce spíš na analyzování času vytvoření nebo změny souboru a udržení hodnoty v proměnné pro další zpracování. Něco to do sebe bude mít určitě, ale asi mi to stačit nebude :-)

Když bych si to rozebral na jednotlivé funkce, tak potřebuji první funkci, která mi zjistí jak starý je soubor, a pak druhou funkci která bude porovnávat tu vloženou například se současným datem. Ta, která bude větší (třeba starší než...) by se mohla další funkcí smazat. To by asi šlo, ale co když v té složce bude například 5000 obrázků? (kapacitně cca 30-50 MB). To by bylo jedno?
TeeVee
Profil *
Tohle by se asi dalo použít (z manuálu)

################################
The snippet of code earlier that allows you to delete all files older than 2 weeks uses the function (filemtime) - which checks the original create date of the file (filesystem independent). You MAY want to use filectime() - that looks at when the file was last changed on YOUR file system.

        if (is_dir("$path") )
        {
           $handle=opendir($path);
           while (false!==($file = readdir($handle))) {
               if ($file != "." && $file != "..") { 
                   $Diff = (time() - filectime("$path/$file"))/60/60/24;
                   if ($Diff > 14) unlink("$path/$file");

               }
           }
           closedir($handle);
        }

#################################

Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: