php скрипт удаления старых файлов из директории

Тема в разделе "PHP", создана пользователем lexxxus56, 13 авг 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lexxxus56

    lexxxus56

    Регистр.:
    27 окт 2007
    Сообщения:
    370
    Симпатии:
    373
    Нужен РНР скрипт, способный при запуске, удалять из заданной директории файлы старше (такого-то) времени создания.
    Попутно, хочу спросить, можно ли запускать этот скрипт при закрытии сессии юзером. Если "да", то как ?
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    На форуме есть примеры скриптов получающих список файлов в директории.
    Добавляешь в него 2-е строки и готово.

    Что ты имеешь в виду под закрытием сессии?
     
  3. anarki

    anarki Прохожие

    Перейти по ссылке + stat
    Перейти по ссылке если правильно понял
     
  4. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    При запуске такого пхп скрипта могут быть проблемы с правами доступа и как следствие с безопасностью, поскольку нужно будет для пхп разрешить права на запись. Лучше удалять ненужные файлы по крону.
     
  5. ashotik

    ashotik

    Регистр.:
    7 авг 2008
    Сообщения:
    176
    Симпатии:
    20
    Если файлы самим скриптом создаешь, то при создании просто права нужные тогда надо ставить, и все будет нормально удаляться.
    А про крон верно сказано, единственное если обьем большой, лучше как разпараллелить этот процесс, ибо могут быть нромальные тормоза.
    Работа с файлами это не БД тебе.
     
  6. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    Нет проблем если по крону, у меня кэш несколько тыс файлов, запускается в 3 ночи, работает макс секунду-две, тормозов не обнаружил, даже если вручную скрипт запускать.
     
  7. lexxxus56

    lexxxus56

    Регистр.:
    27 окт 2007
    Сообщения:
    370
    Симпатии:
    373
    Покумекавши, сделал такой скрипт:
    PHP:
    $date=date("His"); //узнаём текущее время
    $ndate=$date+300//задаем время удаления
    //создаем базу удаляемых файлов
    $dadr="delfile.bd";
    $dinfo=file($dadr);
    $drazmer=sizeof($dinfo);
    $dn=$drazmer-1;
    $dstr=explode("|"$dinfo[$dn]);
    $dopen=fopen("delfile.bd","a");
     
    fwrite($dopen,"$filess|$ndate\r\n");
     
    fclose($dopen);
     if (
    $dstr[1] > $date) {
         echo 
    $dstr[1],"файл пора удалять";
    } else {
         echo 
    "пока не удаляется";
    }
    $filess - это путь до файла
    В базе "delfile.bd" появляется строка:
    Код:
    ./dir/1.txt|151723
    ./dir/2.txt|151755
    
    Как сделать, чтоб при повторе переменной $dstr[1] эта строка заменялась на новую, а не писалась еще раз, а при удалении файла, удалялась строка с адресом $filess ?
     
  8. anarki

    anarki Прохожие

    А зачем вообще базу вести дат, если они и так уже есть в виде атрибутов файлов в файловой системе.
     
  9. lexxxus56

    lexxxus56

    Регистр.:
    27 окт 2007
    Сообщения:
    370
    Симпатии:
    373
    файл может быть создан черти-когда, а в директории появился недавно и время жизни его ограничено переменной $ndate .
     
  10. sens7

    sens7 Постоялец

    Регистр.:
    9 авг 2008
    Сообщения:
    51
    Симпатии:
    7
    на шелле можно сделать одной командой
    find /путь/к/дире/ -atime +2w -delete
    и поставить её в крон
    будет удалять все файлы страше 2-ух недель
    и не надо никаких пхп скриптов писать:ah:
     
Статус темы:
Закрыта.