php удалить файлы старше n дней

Удаление файлов старше n дней

Иногда надо сделать удаление файлов старше n дней. Например Backup’ ы. Можно делать это вручную, отсортировать их по дате и удалить, а можно воспользоваться скриптом. В данном примере мы рассмотрим скрипт для удаления файлов старше n дней и добавим задание в планировщик Windows Server 2012R2.

Иногда надо сделать удаление файлов старше n дней. Например Backup’ ы. Можно делать это вручную, отсортировать их по дате и удалить, а можно воспользоваться скриптом. В данном примере мы рассмотрим скрипт для удаления файлов старше n дней и добавим задание в планировщик Windows Server 2012R2.

Содержание:

1. Скрипт удаления файлов старше n-дней

2. Создание задания в планировщике задач

#Скрипт удаления файлов старше n-дней

Скрипт на самом деле очень простой, создается в PowerShell и выглядит он следующим образом:

Вот так это выглядит в PowerShell:

Осталось только его выполнить и все.

#Создание задания в планировщике задач

Итак, что нам для этого надо?

Выбираем пункт «Создать задачу«:

На вкладке «Общие» задаем имя задания, его описание и пользователя, от которого оно будет выполняться. По умолчанию там будет пользователь, под которым вы вошли в данный момент в систему.

Далее переходим на вкладку «Триггеры» и создаем расписание, когда мы будем запускать наше задания. У меня настроено в 10:00 каждые 2 дня.

Далее идем на вкладку «Действия» и задаем действие, которое будет выполняться. Выбираем «Запуск программы»

программу или сценарий

и указываем путь до PowerShell:

А аргументе указываем путь до нашего скрипта, который мы создали ранее:

Нажимаем «Ок» и еще раз «Ок«

Все, на этом наше задание создано. Осталось дождаться, когда будет выполнено наше действие по расписанию и проверить, все ли правильно было настроено.

Источник

Быстрый способ удаления папки на PHP

В РНР для удаления файла существует функция unlink (), для удаления пустого каталога — rmdir (). Что делать если нужно рекурсивно удалить папку со всеми файлами и подкаталогами. На помощь приходит glob () в связке с array_map ().

Заметьте, что в функции нет ни единого цикла.

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.

Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса.

Ведет блог о разработке, дайджест в телеграмме и в ВК.

Спасибо за идею, но у меня эта функция не сработала так, как хотелось бы. Я немного подкорректировал функцию и вызов. Теперь она удаляет указанную папку со всеми подпапками и файлами:

function removeDir($path) <
return is_file($path)?
@unlink($path):
array_map(‘removeDir’,glob($path.»/*»))==@rmdir($path);
>

Да, вы правы — так будет лучше. Поправил в статье.

А если removeDir в классе определять? Как указывать первый параметр array_map?

Все достаточно просто

array_map(array($this, ‘removeDir’), glob(. ))

Вы не правы насчет не используются цикла как рас используются вы применяется callback функцию что рекурсивно вызывается на каждое значение массива

Визуально в коде нет ни одного цикла. Код читается проще. О внутреннем устройстве функций РНР речи не идет.

А можете объяснить нубу почему эта функция у меня ругается на фигурные скобки в условии, а если их удалить, то начинает ругаться на собаку?

Текст ошибки в студию!

А, да всё… Я решил проблему — не использую этот скрипт. Всё равно там же используется скрипт создания субдомена через cPanel. Я его немного дописал и он ещё и папки теперь удаляет.

То есть ошибку не покажите?

в стоке 2 не хватает скобки
if (is_file($path) <
вот и ошибка

Вообще чувак cPanel дописывает, такой фигни не заметил =) гы.

серврере ложится надо что-то полегче

Service Temporarily Unavailable
The server closed the connection without sending any data.
The server is temporarily unable to service your request due to maintenance downtime or capacity problems.
Due to heavy load on the server, connections may be temporarily blocked from locations that fetch an unusually high number of pages.
We apologize for the inconvenience.

Источник

Как удалить все файлы из папки с помощью PHP?

У меня большое количество посетителей в день и создаётся до 50 тысяч сессий в день. Пишу скрипт, чтобы когда число сессий в папке mod-tmp превысит 20 тысяч, сервер удалял бы из неё все файлы и перезагружался. Помогите, пожалуйста, как с помощью PHP удалить все файлы из 1 папки?

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

7 ответов 7

Вот самый быстрый и лёгкий способ:

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Удалить средствами php сразу все не получится. Только в цикле. Возможно следует посмотреть в сторону демонов, как сказал @Inart.
Код для пхп:

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Грубый подход, очень грубый:

Это сработает только в Linux. Еще раз скажу, подход очень грубый и лучше такого не использовать НИКОГДА.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Вероятно, всё намного проще. ISPManager криво меняет конфиг php отключая сборщик мусора сессий.

Открывайте конфиг php. По-дефолту /etc/php.d/apache/php.ini

Меняйте параметр session.gc_probability=0 в значение 1

Перезапускаете аппач /etc/init.d/apache2 restart

Всё, сборка мусора снова — дело php.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Источник

bash как удалить файлы и директории, старше x-дней?

Есть некая директория Test. В ней находятся файлы и папки. Как удалить только то, что старше 10 дней к примеру.

приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Там не только файлы под удаление, но и папки, в том то и проблема.

При Test, без свежих файлов, удаляет и саму Test

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Разница в скорости будет незаметна, но зато есть везде, ибо posix. Но для не \;, а +

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

При Test, без свежих файлов, удаляет и саму Test

Вариант с * не затронет сам каталог

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Утилита tmpwatch. Одна короткая строчка. И никаких предлагаемых тут нагромождений.

приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.

делай touch /path/to/search/dir/.placeholder перед запуском find и всё. Никаких find dir/*, это пропустит все файлы и директории начинающиеся с точки «.»

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

с возможностью появления завтра у ТСа еще вопроса, например, что делать, если

Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.

Вот только у вас не Ванга, а натуральный наполеонизм какой-то. Я комментировал не вас, а teod0r-а, который комментировал скрипт bash как удалить файлы и директории, старше x-дней? (комментарий)

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Скорее всего я просто не совсем верно интерпретировал ваш пост.

Источник

Удаление директории в PHP

Доброго времени суток, дорогие читатели. Сегодня хотелось бы поговорить на тему удаления директории в PHP. Казалось бы, что операция не является сложной, однако некоторые нюансы имеют место быть. Давайте рассмотрим способы, как можно это сделать.

В PHP для этого предусмотрена функция rmdir(). В качестве аргумента она принимает путь до директории, которую Вы хотите удалить. Однако, директория должна быть пустая — это главное условие (если не считать того, что у пользователя, от которого работает веб-сервер, должны быть права на запись для директории). Если в директории будут размещены файлы, то мы получим ошибку при вызове функции. Соответственно, приходим к выводу, что директорию перед использованием функции rmdir() необходимо предварительно очистить.

В сети советуют написать функцию, которой в качестве аргумента будет передаваться путь к директории, которую нам необходимо удалить. В теле функции необходимо организовать листинг содержимого директории, в рамках которого осуществляется проверка — является ли файл директорией. Если файл является директорией, то по данному условию функция вызывает себя. Это необходимо для зачистки вложенных директорий, и это будет работать на всех уровнях вложенности. В ином случае, для файла применяется функция unlink() — она предназначена для удаления файла. За рамками данной проверки на последнем шаге мы удаляем директорию.

Пример реализации:

Какие проблемы у данного кода?

В итоге, функция обретает следующий вид:

Код рабочий, но на самом деле можно было сделать и проще. В PHP существует класс FilesystemIterator, который уже по умолчанию имеет необходимые нам настройки. В конструктор передается путь до директории, листинг которой нам нужен. Нам достаточно просто создать объект.

В заключение хотелось бы отметить еще один быстрый способ. Корректность его использования весьма сомнительна — отправить команду на выполнение в SHELL.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *