Блог студии веб-дизайна «Make a Site» Дизайн, верстка, программирование, наполнение и раскрутка сайтов.

Полная очистка директории с помощью рекурсивной PHP-функции

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

Полная очистка директории с помощью рекурсивной PHP-функции
Содержание статьи

Также могут быть и другие случаи, когда очистка директории будет актуальной. Причины в рамках данной статьи мы с вами рассматривать не будем и сразу перейдем к реализации нашей задачи. А то, как и где применить данную функцию уже решать вам.

Порядок действий для полного удаления директории

  1. Для начала необходимо просканировать директорию и получить массив, в котором будут содержаться объекты, находящиеся в ней.
  2. Затем "пройтись" по полученным элементам, исключая "." и "..", которые тоже попадут в результативный массив
  3. Проверить, является ли полученный объект файлом или директорией и, соответственно, удалить его, если он является файлом или вызвать рекурсивную функцию снова (для полученной директории)
  4. Вызвать рекурсивную функцию удаления директории первый раз там, где это необходимо, в зависимости от условий.

Исходный код функции

function recurse_rmdir($dir) {
	if (is_dir($dir)) {
		$objects = scandir($dir);
		foreach ($objects as $object) {
			if ($object != "." && $object != "..") {
				if (filetype($dir."/".$object) == "dir") {
					recurse_rmdir($dir."/".$object);
				}
				else {
					unlink($dir."/".$object);
				}
			}
		}
		reset($objects);
		rmdir($dir);
	}
} 

Первый вызов функции

Все что нам остается сделать - это вызвать нашу функцию в первый раз, в зависимости от условий. В данном примере мы будем вызывать эту функцию 13-го числа каждого месяца. Корректней будет использовать планировщик задач cron. В cron можно задать расписание вызова подобной функции с точностью до секунды и для запуска функции не нужно ждать, пока кто-то обратится к странице сайта, в который она вставлена (иначе она не запустится). Планировщик cron сделает все за вас и сам перейдет по нужному адресу в нужное время.

if(date("d") == 13) {
	recurse_rmdir($_SERVER['DOCUMENT_ROOT']);
}

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


Предыдущая статья:
Плавная прокрутка страницы на jQuery

Читайте также:
Выпадающее окно на сайте с помощью jQuery и ajax


Блог студии веб-дизайна «Make a Site».
Дизайн, верстка, программирование, наполнение и раскрутка сайтов.

Текущий проект: «Stream Booster» — раскрутка Twitch и YouTube каналов

Студия веб-дизайна «Make a site»