PHP: хороший скрипт для очистки временного файла для cron? - PullRequest
2 голосов
/ 22 августа 2010

У меня есть временная папка, созданная моим бизнес-приложением, и я хочу, чтобы документы в ней были доступны только в течение примерно 30 минут.У меня был соблазн создать индекс для отслеживания того, когда каждый файл был создан, но это было бы немного глупо только для временных файлов, они не имеют особого значения, но я бы хотел, чтобы они были удалены в соответствии со временем их последнего изменения.

Что мне нужно сделать с моим сервером Linux?

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

Функция filemtime () позволит вам проверить дату последнего изменения файла. То, что вам нужно будет делать, это запускать вашу работу cron каждую минуту и ​​проверять, превышает ли она пороговое значение, и unlink() делать это при необходимости.

$time = 30; //in minutes, time until file deletion threshold
foreach (glob("app/temp/*.tmp") as $filename) {
    if (file_exists($filename)) {
        if(time() - filemtime($filename) > $time * 60) {
            unlink($filename);
        }
    }
}  

Это должен быть самый эффективный метод, как вы и просили, измените пороговое значение cron на 10 минут, если вам нужна меньшая точность при наличии большого количества файлов.

1 голос
/ 22 августа 2010

Вам ничего не понадобится, кроме как вызвать stat для файлов и решить, unlink их или нет, основываясь на их mtime.

Вызывать этот скрипт каждые десятьминут или около того от cron или anacron.

Или вы можете использовать tmpwatch, программу, разработанную для этой цели.

...