Autor Zpráva
Vivan
Profil *
Zdravím Vás tu zas!
Zháňam mazací skript, ktorému stačí nastaviť parametre napr. datum od ktorého zmaže staršie súbori. Neviete o nejakom takom ?
Ja som hľadal ale zatial nič...
ShiraNai7
Profil
Staci si nechat vypsat obsah adresare, cas u jednotlivych souboru zjistit funkci filemtime() a pokud je rozdil aktualniho a nacteneho casu veci nez nejaka hodnota, soubor smazat. Tohle by mohlo fungovat, ale netestoval jsem to.

//nastaveni
$max_stari=604800; //maximalni stari souboru (v sekundach)
$adresar='adresar/'; //i s lomitkem na konci!

//zpracovani
$handle=opendir($adresar);
while($polozka=readdir($handle)){
if(time()-filemtime($adresar.$polozka)>=$max_stari){unlink($adresar.$polozka);}
}
Vivan
Profil *
Dakujem za odpoved, už to funguje.
Ešte sa spýtam: Ako by šlo zariadiť aby sa zmazal len úplne najstarší súbor ?
Alphard
Profil
pomocí funkce filemtime() ho najdeš a smažeš, je to velmi podobné předchozímu
ShiraNai7
Profil
Vivan
Nejak takto (netestoval jsem to):

//nastaveni
$adresar='adresar/'; //i s lomitkem na konci!

//zpracovani
$handle=opendir($adresar);
$nejstarsi_cas=0;
$nejstarsi_soubor=null;
while($polozka=readdir($handle)){
$cas=filemtime($adresar.$polozka);
if($cas>=$nejstarsi_cas){$nejstarsi_soubor=$polozka; $nejstarsi_cas=$cas;}
}

if($nejstarsi_soubor!==null){unlink($adresar.$nejstarsi_soubor);}
Alphard
Profil
if($cas>=$nejstarsi_cas)
nemělo by to být obráceně? takhle to bude imho mazat nejnovější

// potom ještě upravit $nejstarsi_cas=time();
ShiraNai7
Profil
Alphard
jo máš pravdu, v té rychlosti jsem to přehlídl

potom ještě upravit $nejstarsi_cas=time();
~ proč? to je nějaké divné
YoSarin
Profil
ShiraNai7
potom ještě upravit $nejstarsi_cas=time();
~ proč? to je nějaké divné

Protože čas z filemtime bude těžko <= 0 :)
ShiraNai7
Profil
YoSarin
To je blblost, o to vůbec nejde. Jen ukádám čas načtený fcí filemtime() do proměnné $nejstarsi_cas, protoze byl vyhodnocen jako starší než minule nalezený nejstarší. V dalším kroku se bude načtený porovnávat s ním.. atd
YoSarin
Profil
ShiraNai7
myslím že se mýlíš - pokud do proměnné $nejstarsi_cas uložíš na začátku hodnotu 0, a pak v cyklu porovnáváš:
if ($cas <= $nejstarsi_cas) {
  $nejstarsi_soubor=$polozka;
  $nejstarsi_cas=$cas;
}
, přičemž čas získáváš pomocí filemtime (které se 100% pravděpodobností vrátí hodnotu větší než 0), tak tato podmínka nebude splněna nikdy. soubor jehož filemtime by bylo menší než 0 by musel být modifikován před 1. 1. 1970, což je nereálné...

Jo, ale teď kokám, že možná mluvíme každé o něčem jiném - já (a nejspíš i Alphard) mluvíme o prvotní deklaraci proměnné $nejstarsi_cas, ne o té změně co poté probíhá v tom cyklu... :)

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:

0