Автоматический удаляют все файлы после x-time

Как делают Вы автоматический удаляете все файлы под подкаталогом после x-time (позвольте, говорят после 24 часов) - не используя команду cronjob с сервера или мн. Как можно сделать это просто использующее код PHP или просто посетив страницу, не нажимая что-то и команду автоматические выполнения.

8
задан Brian Tompsett - 汤莱恩 4 July 2015 в 13:31
поделиться

2 ответа

Ответ на последний комментарий из моего первого ответа. Я собираюсь написать образец кода, поэтому я создал другой ответ вместо добавления еще одного комментария.

Чтобы удалить файлы с настраиваемым расширением, вам необходимо реализовать код:

<?php
  $path = dirname(__FILE__).'/files';
  if ($handle = opendir($path)) {

    while (false !== ($file = readdir($handle))) {
        if ((time()-filectime($path.'/'.$file)) < 86400) {  // 86400 = 60*60*24
          if (preg_match('/\.txt$/i', $file)) {
            unlink($path.'/'.$file);
          }
        }
    }
  }
?>

Комментарий : 1. Этот пример использует регулярное выражение / \. txt $ / i , что означает, что будут удалены только файлы с расширением txt . Знак «$» означает, что имя файла должно заканчиваться строкой «.txt». Флаг «i» указывает, что сравнение будет без учета регистра. Подробнее о функции preg_match () .

Кроме того, вы можете использовать функцию strripos () для поиска файлов с определенным расширением. Вот фрагмент кода:

<?php
  $path = dirname(__FILE__).'/files';
  if ($handle = opendir($path)) {

    while (false !== ($file = readdir($handle))) {
        if ((time()-filectime($path.'/'.$file)) < 86400) {  // 86400 = 60*60*24
          if (strripos($file, '.txt') !== false) {
            unlink($path.'/'.$file);
          }
        }
    }
  }
?>

Комментарий : Этот пример кажется более очевидным. Результат strripos () также может быть достигнут комбинацией двух функций: strrpos (strtolower ($ file), '.txt') , но, IMHO, это хорошее правило использовать меньше функций в коде, чтобы сделать его более читабельным и меньшим. Пожалуйста, прочтите внимательно предупреждение на странице функции strripos () (блок возвращаемых значений).

Еще одно важное замечание : если вы используете систему UNIX, удаление файла может завершиться неудачно из-за прав доступа к файлу. Вы можете проверить руководство о функции chmod () .

Удачи.

прочтите внимательно предупреждение на странице функции strripos () (блок возвращаемых значений).

Еще одно важное замечание : если вы используете систему UNIX, удаление файла может завершиться неудачно из-за прав доступа к файлу. Вы можете проверить руководство о функции chmod () .

Удачи.

прочтите внимательно предупреждение на странице функции strripos () (блок возвращаемых значений).

Еще одно важное замечание : если вы используете систему UNIX, удаление файла может завершиться неудачно из-за прав доступа к файлу. Вы можете проверить руководство о функции chmod () .

Удачи.

15
ответ дан 5 December 2019 в 06:09
поделиться

Вы можете использовать основные функции PHP filectime () и unlink () , чтобы проверить время создания файла и удалить его файл / файлы.

РЕДАКТИРОВАТЬ. Пример кода:

  if ($handle = opendir('/path/to/files')) {

    while (false !== ($file = readdir($handle))) {
        if (filectime($file)< (time()-86400)) {  // 86400 = 60*60*24
          unlink($file);
        }
    }
  }
8
ответ дан 5 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: