Всем привет. У меня какое дело. Пользователь загружает изображение, выбирает в нём область, сохраняет. Если все прошло как надо, то исходное изображение исчезает и ни кому больше не мешает. А вот что делать если всё не прошло как надо? У пользователя ВНЕЗАПНО оборвался сеанс? Мысли у меня две. Первая очевидная, но в тернетах пишут что не кошерная. Проверять все активные сессию(вот кстати - а как это делать?) и грохать из папочки с временными файлами, все файлы, имена которых не соответствуют именам в активных сессия. Ну, и повесит на крон, раз в час. Вторая не нравится мне потому что лень=) Пишем названия всех временных файлов в БД. Потому так же раз в час проверяем. Если запись сделана более полу часа назад то трём и её и файл. Очень хотелось бы услышать что первый вариант уже не считается таким уж безумием=)) Ну, или посоветуйте, что-нибудь для ленивых=)
При таком подходе весьма шустрая штука. Не используй glob или scandir, если у тебя там откровенная помойка. PHP: <?php $killtime = strtotime("-15 minutes"); if(($directory = opendir("."))) { while(($file = readdir($directory)) !== false) { if($file != "." && $file != "..") { if(filemtime($file) <= $killtime) { unlink($file); } } } } ?>
ты можешь предположить, что временный файл может быть актуальным для пользователя только какой-то промежуток времени? Ну, так и грохай файлы, которые старше определённого срока. Какой смысл в привязке к активной сессии? И для чего БД, если возможно средствами шелла узнать через mtime протух файл или нет и удалить? Код (Text): 5 0 * * * /usr/bin/find /tmp/mydata -mtime +1 -exec rm -f {} \;