training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как удалить папку с данными PHP

Создано: 26 декабря 2015Автор: Егор Астапов2889 просмотровСложность: легкий

Очень часто нужно удалить рекурсивно папку с картинками средствами PHP. Как удалить папку с данными PHP? Тут несколько способов реализации. Вся сложность заключается в том, что сначала нужно удалить все картинки в папке и только потом удалить папку. Самый простой способ - это использовать BASH, но у нас несколько иная задача на PHP.


/*
 * removeDirectory($dir)
 * удаление директории + удаление файлов в директории
 * */
  function removeDirectory($dir) {
    if ($objs = glob($dir."/*")) {
       foreach($objs as $obj) {
         is_dir($obj) ? removeDirectory($obj) : unlink($obj);
       }
    }
    rmdir($dir);
  }  
  removeDirectory('../f1');

Создайте папку f1 и наполните её картинками. Расположите скрипт рядом с папкой. Затем примените функцию removeDirectory(). Рассмотрим тело функции removeDirectory(). Функция glob() ищет все пути, совпадающие с шаблоном согласно правилам. Цикл foreach пробегается по массиву. Условие проверяет является ли элемент массива файлом или папкой. Если элемент массива папка, то функция запускает саму себя. Если элемент массива файл (картинка), то выполняется функция unlink(). Эта функция удалит файл. Как только будут удалены все картинки в папке, то будет запущена функция rmdir(). Она удалит пустую папку.

Допустим вам нужно удалить старую папку или файл? Например, папка создана час назад и вам нужно удалить её через час. Тут поможет функция filemtime.


$folder = "./folder1/";
if(file_exists($folder))
{
    $curTime = time();
    $getDateCreate = filemtime($folder);
    
    $countMin = ($getDateCreate - $curTime) / 60;
    $countSec = ($getDateCreate - $curTime);
    $countMin = round($countMin, 1);
    echo "min: ".$countMin.", sec: ".$countSec;
}
else
{
    echo "нет файла!";	
}
// вывод: min: -12.6, sec: -753

Вы можете просканировать текущую директорию и при помощи цикла удалить найденные папки. О том как просканировать файлы и папки в текущей директории читайте статью как просмотреть содержимое папки scandir() PHP.

Комментарии

Александр: 29 декабря 2016 11:55:04
Здравствуйте! А как удалить папку вместе с файлами, через определенное время после создания (скажем, через сутки), не зная её имени, а ориентируясь только на время создания и директорию в которой эта папка находится?

Егор Астапов: 29 декабря 2016 17:41:02
Добрый вечер Александр. Сделал для тебя пример. Посмотри выше. помогла функция filemtime(). В одной минуте 60 секунд. В одном часе 60 * 60 секунд. Например, 3600 * 2 - это два часа. По секундам будешь ориентироваться ))

Александр : 29 декабря 2016 21:38:46
Большое спасибо!

реклама