За последние 24 часа нас посетили 17796 программистов и 1925 роботов. Сейчас ищут 1090 программистов ...

Временные файлы, сесси, тупняк

Тема в разделе "Прочие вопросы по PHP", создана пользователем GudGuy, 10 июл 2010.

  1. GudGuy

    GudGuy Активный пользователь

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    Всем привет.
    У меня какое дело. Пользователь загружает изображение, выбирает в нём область, сохраняет. Если все прошло как надо, то исходное изображение исчезает и ни кому больше не мешает.
    А вот что делать если всё не прошло как надо? У пользователя ВНЕЗАПНО оборвался сеанс?
    Мысли у меня две.
    Первая очевидная, но в тернетах пишут что не кошерная. Проверять все активные сессию(вот кстати - а как это делать?) и грохать из папочки с временными файлами, все файлы, имена которых не соответствуют именам в активных сессия. Ну, и повесит на крон, раз в час.
    Вторая не нравится мне потому что лень=) Пишем названия всех временных файлов в БД. Потому так же раз в час проверяем. Если запись сделана более полу часа назад то трём и её и файл.
    Очень хотелось бы услышать что первый вариант уже не считается таким уж безумием=))
    Ну, или посоветуйте, что-нибудь для ленивых=)
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    filemtime
     
  3. GudGuy

    GudGuy Активный пользователь

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    о! Спасибо, реально уже туплю=)
    А со скоростью работы у неё как?
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    При таком подходе весьма шустрая штука.
    Не используй glob или scandir, если у тебя там откровенная помойка.

    PHP:
    1. <?php
    2.  
    3. $killtime = strtotime("-15 minutes");
    4.  
    5. if(($directory = opendir("."))) {
    6.  while(($file = readdir($directory)) !== false) {
    7.   if($file != "." && $file != "..") {
    8.    if(filemtime($file) <= $killtime) {
    9.     unlink($file);
    10.    }
    11.   }
    12.  }
    13. }
    14.  
    15. ?>
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ты можешь предположить, что временный файл может быть актуальным для пользователя только какой-то промежуток времени? Ну, так и грохай файлы, которые старше определённого срока.
    Какой смысл в привязке к активной сессии?
    И для чего БД, если возможно средствами шелла узнать через mtime протух файл или нет и удалить?

    Код (Text):
    1. 5 0 * * *       /usr/bin/find /tmp/mydata -mtime +1 -exec rm -f {} \;
    :)
     
  6. GudGuy

    GudGuy Активный пользователь

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    Apple
    пасиб=)

    Luge
    Чувствую себя лохом. Я в никсах по прежнему ни в зуб ногой=(