| Autor | Zpráva | ||
|---|---|---|---|
| Vivan Profil * |
#1 · Zasláno: 14. 6. 2008, 09:20:16
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 |
#2 · Zasláno: 14. 6. 2008, 11:00:40
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 * |
#3 · Zasláno: 14. 6. 2008, 21:44:04
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 |
#4 · Zasláno: 14. 6. 2008, 23:23:24
pomocí funkce filemtime() ho najdeš a smažeš, je to velmi podobné předchozímu
|
||
| ShiraNai7 Profil |
#5 · Zasláno: 14. 6. 2008, 23:40:52
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 |
#6 · Zasláno: 14. 6. 2008, 23:45:17 · Upravil/a: Alphard
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 |
#7 · Zasláno: 16. 6. 2008, 09:53:44 · Upravil/a: ShiraNai7
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 |
#8 · Zasláno: 16. 6. 2008, 11:50:46
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 |
#9 · Zasláno: 16. 6. 2008, 19:28:21
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 |
#10 · Zasláno: 16. 6. 2008, 23:40:01
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;
}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... :) |
||
|
Časová prodleva: 17 let
|
|||
0