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

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

Я создал приложение 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, понадобятся ли мне какие-либо специальные команды для его запуска и как часто вы будете советовать?

3 ответа

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

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

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

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

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

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');
}

Пытаться:

<?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

Другие вопросы по тегам