Создание сайтов на 1С-Битрикс

Очистка папки bitrix/upload от неиспользуемых файлов

Скрипт для очистки каталога сайта на Битрикс от неиспользуемых файлов.


Появилась новая версия скрипта!
Она работает быстрее и проходит рекурсивно все папки.

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

define("NO_KEEP_STATISTIC", true); 
define("NOT_CHECK_PERMISSIONS", true); 

// Формируем кэш имен файлов на основе таблицы b_file.
$arFilesCache = array();
$result = $DB->Query('SELECT FILE_NAME, SUBDIR FROM b_file WHERE MODULE_ID = "iblock"');
while ($row = $result->Fetch()) {
    $arFilesCache[ $row['FILE_NAME'] ] = $row['SUBDIR'];
}

$rootDirPath = $_SERVER['DOCUMENT_ROOT'] . "/upload/iblock";
$hRootDir = opendir($rootDirPath);
$count = 0;
while (false !== ($subDirName = readdir($hRootDir))) {
    if ($subDirName == '.' || $subDirName == '..') 
        continue;
    $subDirPath = "$rootDirPath/$subDirName";
    $hSubDir = opendir($subDirPath);    
    while (false !== ($fileName = readdir($hSubDir))) {
        if ($fileName == '.' || $fileName == '..') 
            continue;
        if (array_key_exists($fileName, $arFilesCache)) {
            continue;
        }
        $fullPath = "$subDirPath/$fileName";
        if ($_GET['action']=='delete') {
            if (unlink($fullPath)) {
                echo "Удалён " . $fullPath . '
';
            }
        } elseif ($_GET['action']=='move' && !empty($_GET['dir'])) {
            $commandvalue = $_GET['dir'];
			mkdir("$commandvalue/$subDirName",0775, true);
			if (rename($fullPath, "$commandvalue/$subDirName/$fileName")) {
				echo "Перенос " . $fullPath . '
';
			}
		}
        else {
            echo $fullPath . '
';
        }
    }
    closedir($hSubDir);
    if (!empty($_GET['action'])) {
		//delete empty directory
		@rmdir($subDirPath);
    }
}
closedir($hRootDir);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");



Логотип SiteBERG
Изменено: 24.12.2025 19:05

Источник: https://github.com/Mediahero/bitrix-clear-upload

Статьи

Что нужно сделать?