Автоматическое удаление файлов с сервера?

Мне было интересно, есть ли способ использовать сценарий или какой-либо другой вариант, с помощью которого я мог бы автоматически удалять файлы за определенную дату с моего сервера.

Я создал приложение AS3 eCard, в котором php-скрипт записывает файл *.txt в папку с соответствующими деталями сообщения и т. д. и хотел бы знать, возможно ли, чтобы файлы старше «n» дней автоматически удалялись каким-либо образом не загромождать сайт?

Поправка к PHP:

    <?php

if ($handle = opendir('/myFolder/holdingFolder')) {

while (false !== ($file = readdir($handle))) { 
    $filelastmodified = filemtime($file);

    if((time() - $filelastmodified) > 14*24*3600)
    {
       unlink($file);
    }

}

closedir($handle); 
}
?>

Я все еще изучаю php и был бы признателен, если бы кто-нибудь с большим опытом мог просмотреть это, чтобы указать мне правильное направление, если это правильный способ удаления файлов в папке после 14 дней создания?

Если да, то мой сервер — Windows/Plesk, нужны ли мне какие-то специальные команды для его запуска и как часто вы бы посоветовали?


person esadude    schedule 15.11.2012    source источник


Ответы (3)


Основываясь на том, что вы сказали, я думаю, что вам проще всего начать с задания cron и php-скрипта.

Напишите PHP-скрипт, чтобы файлы проверяли дату создания и удаляли старые. Затем настройте PHP-скрипт на задание cron, которое может выполняться по любому расписанию.

Конечно, есть 1000 способов приблизиться к этому, но похоже, что вы уже знаете PHP, а cron доступен в любой системе *nix.

Вот ссылка на случайный результат Google по информации и использованию Crontab.

person noisewaterphd    schedule 15.11.2012
comment
Спасибо за ответ, теперь буду знать название. Я знаю, что это возможно, так как я видел, как это реализовано на других сайтах, но когда вы никогда не делали этого раньше, незнание методов составляет половину проблемы в том, чтобы найти его, когда вы хотите его изучить. - person esadude; 16.11.2012
comment
Я только что добавил некоторый код, который, я думаю, может быть на правильном пути, если у вас есть возможность взглянуть, я был бы признателен за любые отзывы, поскольку я не хочу случайно удалять каждую папку на моем сервере каждые 14 дней! - person esadude; 16.11.2012

Пытаться:

<?php
$dir = '/path/to/files/';
$days = 3600 * 24 * 7; // 7 days
if($handle = opendir($dir)) {

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        if ( filemtime($dir.$file) <= time()-$days) {
           unlink($dir.$file);
        }
    }

    closedir($handle);
}

затем запустите этот скрипт через cron

person Kyle Hudson    schedule 15.11.2012
comment
Спасибо, ребята, +1 за помощь, просто не хватает баллов, чтобы добавить его, но я нуб, для справки, это сервер Windows, использующий Plesk, поэтому, возможно, планировщик задач может обрабатывать команду, аналогичную приведенному выше коду cron, если не я из любопытства рассмотрю перечисленные методы php, какой из них лучше сделать? - person esadude; 18.11.2012

Если у вас есть доступ к cron, то вам не нужен PHP - например, чтобы раз в день....

23 4 * * * find /your/directory -iname \*.txt -mtime +3 -exec rm -f {} \;

Если у вас нет доступа к cron, запустите его как сборщик мусора в качестве функции завершения работы. Например. (нагло украл код Кайла Хадсона, хотя замечу, что он даже скопировал комментарии отсюда ;)

function gc_txt_files()
{
   $dir = '/path/to/files/';
   $days = 3600 * 24 * 7; // 7 days
   if($handle = opendir($dir)) {
        /* This is the correct way to loop over the directory. */
        while (false !== ($file = readdir($handle))) {
           if ( filemtime($dir.$file) <= time()-$days) {
              unlink($dir.$file);
           }
        }
        closedir($handle);
    }
}
if (17==rand(0,200)) { // adjust 200 depending on how frequently you want to clear out
    register_shutdown_function('gc_txt_files');
}
person symcbean    schedule 16.11.2012
comment
Документы — это хорошо, но когда вы гуглите вещи, в которых вы не уверены, и видите 20 различных способов сделать это с небольшими реальными различиями, объясненными или покрытыми, часто приятно услышать от людей, которые их используют и знают тонкости или профессионалы. и минусы разных способов. Есть методы и вещи, которые люди, обучающиеся, как я, упускают из-за множества разных способов. Я узнаю столько, сколько могу, где могу, и получаю удовольствие от поиска способов самостоятельно, но я знаю php, следовательно, запрос и устал использовать его с методами, в которых я не уверен, но я рискну ради печенья. .. Θ) - person esadude; 19.11.2012