yavaho
17.03.2005, 00:00:01
Uzytkownik robi jakies operacje na plikach graficznych. Najpierw ustala pewne parametry (rozdzielczosc, kompresje, dodaje takst na obraz itp) Wciska OK i otrzymuje wynik w postaci obrazka na monitorze. W tym samym momencie obrazek zostaje zapisany na serwerze jako plik tymczasowy - i gdy uzytkownik zdecyduje sie na ta wersje obrazka to zapisze go do swojej galerii.
Ale zanim zdecyduje sie na zapis wlasciwego obrazka to z pewnoscia bedzie generowal kilka jego poprzednich wersji.
Kazda wygenerowana wersja obrazka ma inna nazwe pliku z tego wzgledu aby uniknac cachowania obrazka w przegladarce.
I teraz pytanie: jak usunac obrazek gdy uzytkownik w pewnej chwili zrezygnuje i opusci strone? Bo jezeli zakonczy wszystko normalnie i zapisze swoj obrazek to bez problemu mozna usunac ten "temp".
dr_bonzo
17.03.2005, 00:04:33
Trzeba by zapamietac nazwy wszystkich tych plikow, lub tworzyc je w jednym katalogu (zapamietac jego nazwe) i pozniej go usunac z cala zawartoscia. Albo przechowywac obrazki w bazie danych - dodajesz im pole temp (wskazujace czy jest do usuniecia) i id usera (sesji -- zeby rozpoznac czyje to obrazki) i usuwasz wszstkie rokordy z temp = 1 i pasujace do danego usera.
Darti
17.03.2005, 00:11:18
Ja miałem podobny problem. Miałem skrypcik generujący wykresy dynamicznie.
Zastosowałem katalog TEMP + kasowanie plików "starszych niż" (np 3 dni). Temp sprawdzany był co pierwszą wizytę każdego dnia. Działa

ps - starszych niż - czyli sprawdzana data utworzenia pliku i warunek if w pętli
yavaho
17.03.2005, 00:14:15
Ale kiedy je usunac?
Jezeli user w pewnej chwili przerwie wykonywanie operacji ktore powinien dokonczyc i zostawi po sobie smieci, ktore normalnie zostaly by usuniete jezeli by doszedl do konca operacji ktore rozpoczal.
dr_bonzo
17.03.2005, 00:18:21
No to wtedy (kiedy przechowujesz obrazki w bazie + dodajesz pole data_utworzenia_obrazka) przy wejsciu dowolnego usera na strone usuwasz wszystkie STARE obrazki (tzn starsze niz np. 30 minut) -- dzieki temu usunesz 'pozostawione' obrazki przez niezakonczone akcje.
yavaho
17.03.2005, 00:23:23
Juz mialem isc spac ale chyba dzieki Wam cos wymyslilem

Nazwy plikow tymczasowych beda mialy czas pobierany z time();
I kazdy nastepny user bedzie sprzatal po poprzednim - czyli zrobie skrypt ktory uruchomi kazdy user i bedzie usuwal pliki starsze niz np 1 dzien.
To powinno chyba dzialac?
Darti
17.03.2005, 00:25:33
znaczy niekoniecznie data byla w bazie - wogole po co mieszac w to baze? skoro czyscimy cyklicznie tempa, to tam jest gora kilka(nascie) obrazkow - uzylem readdir() albo cos takiego zeby sprawdzic datę utworzenia pliku.
ps - takie cos zrobilem (możliwe że częściowo przy pomocy manuala - nie pamiętam)
<?php
function czysc_temp(){
list
($a,$czas) = explode(\" \",microtime()); if ($handle = opendir(_TEMP_DIR
)) { while (false !== ($file = readdir($handle))) { if ($file != \".\" && $file != \"..\" && file_exists(_TEMP_DIR .$file)) {
if (filectime(_TEMP_DIR
. $file) + 86400
< $czas){ }
}
}
}
}
?>
dr_bonzo
17.03.2005, 00:45:19
@Darti: twoje rozwiaznie jest ok i chyba najprostsze (tzn kodu nie sprawdzalem, chodzi mi o pomysl)
DLaczego baza? Chcialem w prosty sposob zapamietac czas utworzenia obrazkow i usera do nich przyporzadkowanego -- dla latwego usuwania.
Ide spac.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.