Папка upload bitrix как чистить – Mediahero/bitrix-clear-upload: Скрипт для очистки каталога upload/iblock сайта на CMS 1С-Битрикс от неиспользуемых файлов (оставшихся после удаления элемента инфоблока).

Bitrix — способ очистки папки upload/iblock от ненужных файлов — WordPress и Woocommerce плагины

<?php

 

 

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

?>

<?php

 

global $USER;

if (!$USER->IsAdmin()) {

    echo "Одумайся или авторизуйся...";

    return;

}

$time_start = microtime(true);

echo '<br>';

///////////////////////////////////////////////////////////////////

 

define("NO_KEEP_STATISTIC", true);

define("NOT_CHECK_PERMISSIONS", true);

 

$deleteFiles = 'no'; //Удалять ли найденые файлы yes/no

$saveBackup = 'yes'; //Создаст бэкап файла yes/no

//Папка для бэкапа

$patchBackup = $_SERVER['DOCUMENT_ROOT'] . "/upload/zixnru_Backup/";

//Целевая папка для поиска файлов

$rootDirPath = $_SERVER['DOCUMENT_ROOT'] . "/upload/iblock";

//Создание папки для бэкапа

if (!file_exists($patchBackup)) {

    CheckDirPath($patchBackup);

}

 

// Получаем записи из таблицы 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'];

}

 

 

$hRootDir = opendir($rootDirPath);

$count = 0;

$contDir = 0;

$countFile = 0;

$i = 1;

$removeFile=0;

while (false !== ($subDirName = readdir($hRootDir))) {

    if ($subDirName == '.' || $subDirName == '..') {

        continue;

    }

    //Счётчик пройденых файлов

    $filesCount = 0;

    $subDirPath = "$rootDirPath/$subDirName"; //Путь до подкатегорий с файлами

    $hSubDir = opendir($subDirPath);

    

    while (false !== ($fileName = readdir($hSubDir))) {

        if ($fileName == '.' || $fileName == '..') {

            continue;

        }

        $countFile++;

 

        if (array_key_exists($fileName, $arFilesCache)) { //Файл с диска есть в списке файлов базы - пропуск

            $filesCount++;

            continue;

        }

        $fullPath = "$subDirPath/$fileName"; // полный путь до файла

        $backTrue = false; //для создание бэкапа

        if ($deleteFiles === 'yes') {

            if (!file_exists($patchBackup . $subDirName)) {

                if (CheckDirPath($patchBackup . $subDirName . '/')) { //создал поддиректорию

                    $backTrue = true;

                }

            } else {

                $backTrue = true;

            }

            if ($backTrue) {

                if ($saveBackup === 'yes') {

                    CopyDirFiles($fullPath, $patchBackup . $subDirName . '/' . $fileName); //копия в бэкап

                }

            }

            //Удаление файла

            if (unlink($fullPath)) {

                $removeFile++;

                echo "Удалил: " . $fullPath . '<br>';

            }

        } else {

            $filesCount++;

            echo 'Кандидат на удаление - ' . $i . ') ' . $fullPath . '<br>';

        }

        $i++;

        $count++;

        unset($fileName, $backTrue);

    }

    closedir($hSubDir);

    //Удалить поддиректорию, если удаление активно и счётчик файлов пустой - т.е каталог пуст

    if ($deleteFiles && !$filesCount) {

        rmdir($subDirPath);

    }

    $contDir++;

}

if ($count < 1) {

    echo 'Не нашёл данных для удаления<br>';

}

if ($saveBackup === 'yes') {

     echo 'Бэкап файлов поместил в: <strong>' . $patchBackup . '</strong><br>';

}

echo 'Всего файлов удалил: <strong>' . $removeFile . '</strong><br>';

echo 'Всего файлов в ' . $rootDirPath . ': <strong>' . $countFile . '</strong><br>';

echo 'Всего подкаталогов в ' . $rootDirPath . ': <strong>' . $contDir . '</strong><br>';

echo 'Всего записей в b_file: <strong>' . count($arFilesCache) . '</strong><br>';

closedir($hRootDir);

 

 

////////////////////////////////////////////////////////////////////

echo '<br>';

$time_end = microtime(true);

$time = $time_end - $time_start;

 

echo "Время выполнения $time секунд\n";

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");

?>

zixn.ru

Битрикс - Мастер очистки сайта

2.2.24 (23.10.2019) незначительные исправления
2.2.23 (13.10.2019) - мелкие интерфейсные исправления для демо-версии
2.2.22 (18.09.2019) - мелкие интерфейсные исправления
2.2.21 (06.09.2019) - В модуль очистки удаленных модулей добавлено удаление их агентов:
Для платной лицензии модуля теперь отображаются агенты удаленных модулей с возможностью их просмотреть:
https://yadi.sk/i/bE-2EdUi0YFB1w А при удалении таких модулей также удаляются и агенты (хвосты) этих модулей.
Сама очистка модулей получила дополнительные настройки https://yadi.sk/i/N5iAoBPyvy80HA
- незначительные интерфейсные изменения
- другие незначительные улучшения
2.2.20 (08.07.2019) - устранение зависания диагностики при наличии большого числа не активных элементов инфоблоков
2.2.19 (07.06.2019) - изменения в очистке неактивных пользователей, теперь по умолчанию не удаляются
неактивные пользователи, если есть связанные с ним данные https://yadi.sk/i/vjXLDYMOM6FP3w
2.2.18 (04.06.2019) - незначительные интерфейсные изменения (добавлен путь к php в настройках модуля)
2.2.17 (31.05.2019) - незначительные интерфейсные изменения
2.2.16 (11.05.2019) - добавлен гаджет очистки кеша и миниатюр изображений
https://yadi.sk/i/FbzVdzxmdZz_NA
2.2.15 (19.02.2019) - добавлена страница тех.поддержки
2.2.14 (07.02.2019) - Добавлена форма обратной связи при удалении модуля
2.2.13 (05.02.2019) - Исправления интерфейсных ошибок
- Незначительные изменения в интерфейсе (уведомление о новых версиях)
2.2.12 (16.11.2018) - Незначительные изменения в интерфейсе (уведомление о новых версиях)
2.2.11 (04.05.2018) - Исправлены незначительные ошибки
2.2.10 (23.04.2018) - Улучшен интерфейс страницы выбора инструментов очистки
- Исправлена очистка языковых файлов на хостингах под управлением Windows
- Исправлены незначительные ошибки
2.2.9 (21.04.2018) - последняя диагностика теперь сохраняется в базу данных и отображается на вкладке "Результаты последней диагностики"
2.2.8 (20.04.2018) - очистка сессий хранимых в БД https://yadi.sk/i/dc8veWv43Ubb32
- добавлена очистка пустых папок из upload/iblock и upload/main при очистке папки upload
- в интерфейс очистки папки upload добавлена возможность откатить удаленные файлы https://yadi.sk/i/6hUkTGPN3Ubn3j
2.2.7 (11.04.2018) - добавлена вкладка с результатами последней диагностики
2.2.6 (10.04.2018) - Улучшен механизм анализа данных
2.2.5 (13.12.2017) - Улучшена совместимость модуля с PHP 7.1
- Исправлена ошибка очистки временной папки в upload
- Незначительные интерфейсные изменения
2.2.4 (04.12.2017) - Доработан механизм удаления связанных данных при удалении неактивных сайтов, теперь при удалении сайта удаляются все связи с ним.
2.2.3 (07.08.2017) - Исправлена ошибка, когда вес очищаемого места папки upload мог быть ошибочным
- Незначительные интерфейсные изменения
- Другие незначительные изменения
2.2.2 (07.07.2017) - рефакторинг кода, используем d7-методологию
- добавлен новый функционал очистки некоторых таблиц БД
- незначительные изменения интерфейса
2.2.1 (28.06.2017) - ускорена диагностика папки upload
2.2.0 (09.06.2017) - Добавлены профили очистки по cron
- Значительный рефакторинг кода
- Незначительные изменения в интерфейсе
2.1.28 (04.06.2017) - Новый функционал: Исправление совпадающих символьных кодов у свойств элементов инфооблоков
2.1.27 (30.05.2017) - незначительные изменения в интерфейсе (отчет о удаляемых файлах, если уже проводилась диагностика)
- интерфейс: в статистике добавлен размер файлов и сворачивание, если файлов много
2.1.26 (30.05.2017) - улучшения в пошаговом удалении элементов инфоблоков
2.1.25 (19.04.2017) - удален старый не используемый программный код
- незначительные улучшения в интерфейсе
2.1.24 (11.04.2017) - доработана процедура пошагового удаления спама
2.1.23 (10.04.2017) - доработана очистка upload на серверах на базе windows
- доработана очистка папки с уменьшенными копиями изображений upload/resize_cache:
при ее очистке также сбрасывается кеш сайта.
- незначительные изменения в интерфейсе
2.1.22 (07.04.2017) - добавлена отдельная диагностика по каждому шагу при выборе модулей из бокового меню
- добавлена подробная статистика удаляемых файлов папки upload
- незначительные исправления в интерфейсе и логике работы
2.1.21 (05.04.2017)
- добавлено левое меню с ссылками быстрого доступа к шагам очистки
- доработки и оптимизации модулей очистки
- доработки по интерфейсу
- доработки в установщике модуля (желательно удалить и установить модуль заново для корректного обновления БД модуля)
2.1.20 (02.04.2017) - незначительные доработки интерфейса
2.1.19 (02.04.2017) - новый алгоритм очистки папки upload:
- более надежная проверка наличия файлов в upload проверка каждого файла в зарегистрированных местах бд
- добавлено удаление папки upload/1c_catalog с 1с-выгрузками
- незначительные изменения в интерфейсе
2.1.18 (17.02.2017) - добавлено: очистка комментариев блога по автору либо спам-подстроке
2.1.17 (14.02.2017) - интерфейс: добавлен блок "дополнительные инструменты"
2.1.16 (10.02.2017)
- улучшено: удаление не-активных элементов теперь пошаговое
- добавлено: пошаговое удаление элементов инфоблоков (для очистки напр. демо-данных, не создавая нагрузки на сервер)
- добавлено: очистка сообщений форума по автору, его ip, либо спам-подстроке
2.1.15 (23.01.2017) - незначительные изменения в интерфейсе
2.1.14 (06.01.2017) - незначительные изменения в интерфейсе
2.1.13 (27.12.2016) - устранено зависание в анализе неиспользуемых компонент - незначительные изменения в интерфейсе
2.1.12 (24.12.2016) - отключено создание файловых букетных кешей при диагностике - исправлен ряд зависаний очистки модуля
2.1.11 (23.12.2016) - добавлено отображение ошибки в диагностике - ускорена диагностика
2.1.10 (20.12.2016) - рефакторинг кода в диагностике - модернизирована процедура диагностики удаленных модулей
2.1.9 (08.12.2016) 2.1.9 - незначительные улучшения в коде
2.1.8 (01.11.2016) - улучшена совместимость с php7
2.1.7 (20.10.2016) - переделана очистка папки upload - исправлена установка стилей модуля - мелкие доработки интерфейса
2.1.6 (11.10.2016) - рефакторинг кода - исправлена работа модуля в демо-режиме
2.1.5 (07.10.2016) - незначительные изменения - исправлена ошибка диагностики веб-аналитики
2.1.4 (29.09.2016) - доработан функционал с удалением пользователей
2.1.3 (29.09.2016) - рефакторинг кода - незначительные изменения в интерфейсе
2.1.2 (19.09.2016) - обновление очистки upload
2.1.1 (09.09.2016) - небольшие изменения в интерфейсе - доработана процедура удаления лишнего из фото галереи.
2.1.0 (07.09.2016) - рефакторинг и оптимизация производительности
2.0.18 (02.09.2016) - незначительные изменения
2.0.17 (02.09.2016) - незначительные изменения, поддержка php 7.0.2
2.0.16 (22.06.2016) - улучшена совместимость с php 5.3
2.0.15 (29.02.2016) - исправлена ошибка удаления брошенных корзин
2.0.14 (31.01.2016) - исправлено ряд E_WARNING
2.0.13 (30.01.2016) - исправлена ошибка, на некоторых конфигурациях анализ выполнялся не до конца
2.0.12 (22.01.2016) - исправлена ошибка удаления изображений секции
2.0.11 (16.01.2016) - оптимизирована работа со свойствами инфоблоков
2.0.10 (27.10.2015) При обработке папки upload добавлен анализ изображений разделов.
2.0.9 (28.09.2015) Добавлена проверка установленных модулей.
2.0.8 (25.09.2015) Мелкие доработки.
2.0.7 (24.09.2015) При обновлении модуль будет перенесен в раздел веб-студии "АКРИТ"
2.0.6 (21.09.2015) Добавлен демонстрационный режим.
2.0.5 (21.09.2015) Добавлено: - диагностика и статистика; - очистка статистики монитора производительности; - последних просмотренных товаров;
2.0.4 (04.06.2015) Изменено описание шага очистки папки upload.
2.0.3 (04.06.2015) Незначительные улучшения алгоритма очистки
2.0.2 (03.06.2015) Изменено описание шага очитки папки upload.
2.0.1 (13.04.2015) Добавлена поддержка php
1.0.5 (20.11.2014) Добавлены новые пункты очистки, незначительные улучшения
1.0.4 (19.11.2014) Исправлено описание модуля, добавлены новые пункты очистки, мелкие доработки
1.0.3 (19.11.2014) Исправлено описание модуля, добавлены новые пункты очистки
1.0.1 (02.04.2014) Релизное обновление

marketplace.1c-bitrix.ru

Мастер очистки сайта - Модуль для 1С-Битрикс

Технические данные

Дата публикации:

29.11.2014

Дата обновления:

23.10.2019

Адаптивность:

Да

Поддержка композита:

Да

Число установок:

Более 1000 раз

Совместимые редакции

Описание

Модуль очистки сайта позволяет найти лишние  файлы не используемые CMS «1С-Битрикс» и провести удаление спама в блогах форуме и идеях.

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

Важные ограничения:
- в демо версии можно провести только диагностику проблемных мест функционал очистки доступен в полной коммерческой  версии -  модуль теоретически  должен работать на старых версиях Битрикса начиная с  версии 14,0,8 но  учитывая что и Битрикс и мы постоянно выпускаем  обновления продуктов  важно понимать что гарантирована совместимость  только на актуальных  версиях обновлений как ядра БУС так и нашего  модуля. Тестировать  решение на всех предыдущих версиях не целесообразно и  поэтому мы  поддерживаем полную совместимость только на стабильных  версиях  продуктов
- читайте внимательно условия оказания  технической  поддержки, при отсутствии доступа к сайту бесплатная тех  поддержка не  оказывается
- возврат денежных средств за  приобретенные  решения не предусмотрен законодательством РФ так как это  не товар или  услуга а право пользования
- настройка ваших серверов  под  оптимальную работу сайта и устранение ошибок стандартных тестов  системы  управления сайтом 1С-Битрикс проводятся на платной основе,  поэтому  внимательно читайте предупреждение появляющееся перед установкой модуля,  какие тесты сайта должны проходить без ошибок, ведь это важно не только  ради стабильной работы модуля но еще для стабильной работы системы в  целом, разработчики не ради красоты эти тесты разрабатывали

Мы сняли специальное видео о том как правильно установить любой модуль к себе на сайт - https://youtu.be/ene4qDMdn6A

Режим работы техподдержки веб-студии АКРИТ

Понедельник-пятница с10:00 — 17:00 по московскому времени.
Выходные дни: суббота и воскресение, праздничные дни.

Время реакции на обращение – 8 часов.

Гарантированный бесплатный SLA мы заявляем в течение 5 рабочих дней.
Для    решения срочных вопросов вы всегда можете выбрать платную критичность    обращения. Ваш вопрос будет рассмотрен в срочном порядке на платной    основе.

Создание обращения в техподдержку веб-студии АКРИТ

Сообщить о проблеме можно :

  1. Через функционал на сайте разработчика (необходима регистрация) здесь.
  2. Через форму на вкладке Техподдержка интерфейса модуля.

При создании обращения необходимо предоставить нам:

1. Административный доступ на сайт

  • адрес сайта,
  • логин,
  • пароль.
2. FTP аккаунт с правами на чтение/запись всех папок и файлов
  • имя хоста,
  • логин,
  • пароль.
Для оперативного решения вопросов и консультаций можно использовать через скайп: логин support_acrit.

ВНИМАНИЕ! Прежде чем создать обращение, пожалуйста, прочтите

При    возникновении проблем в работе, просьба проверить настройки,    ознакомится с инструкциями и, в первую очередь, проверить корректность    работы платформы.
Модуль установлен, и работает большом количестве    сайтов. Ошибки практически исключены. Случаи, с которыми сталкивается    наша техподдержка, как правило, выявляют ошибки на сервере и самом    сайте. Крайне редко возникает ошибка скачивания решения из    маркетплейса.

Хостинг должен соответствовать минимальным техническим требованиям системы 1С-Битрикс. Проверить соответствие можно

  • Через скрипт проверки  сервера http://www.1c-bitrix.ru/download/files/scripts/bitrix_server_test.php
  • В административной панели вашего сайта http:// *ваш_сайт.ру* /bitrix/admin/site_checker.php?lang=ru
  • В административной панели  http:// *ваш_сайт.ру* /bitrix/admin/perfmon_panel.php?lang=ru
Проверки не должны показывать ошибок.

Важные ограничения!

  1. В Демо-режиме количество товаров в одном профиле выгрузки ограничено 50-ю товарами.

  2. В    редакциях Первый сайт, Старт, Стандарт и Эксперт не будут работать    условия. Функционал условий требует наличия модуля Торговый  каталог,    которого в этих редакциях нет.

  3. Гарантирована    совместимость только на актуальных версиях обновлений Битрикс Управление    сайтом. Теоретически модуль должен работать на версиях Битрикса   начиная  с  версии 14.0.8, но  учитывая тестировать  решение на всех   предыдущих  версиях не целесообразно, мы  поддерживаем полную   совместимость только  на стабильных  версиях  продуктов.

  4. При отсутствии предоставления доступа к сайту бесплатная техподдержка не  оказывается.

  5. Возврат    денежных средств за приобретенные решения не предусмотрен    законодательством РФ, так как это  не товар или  услуга, а право    пользования.

  6. Настройка сервера клиента и устранение    ошибок стандартных тестов системы 1С-Битрикс проводятся на платной    основе. Внимательно читайте предупреждения, появляющиеся перед    установкой модуля. Тесты сайта должны проходить без ошибок.

  7. Для работы решения с соцсетями минимально необходимая версия PHP –  5.4 желательно 5.6.

  8. Ряд    порталов предъявляют требования к фотографиям на текущий момент     рекомендуемое разрешение 2160х3840 UHD (4K) поэтому учитывайте этот    фактор при экспорте данных.

На нашем сайте вы можете найти материалы по настройке сайта и модуля, а также воспользоваться кладовкой советов программиста и почитать полезные материалы по набору маркетинговых инструментов для SEO, SMM и SMO.

www.acrit-studio.ru

Оптимизация размера сайта на платформе 1С-Битрикс / Sandbox / Habr

Доля использования 1С-Битрикс в рунете продолжает расти, поэтому все чаще приходится сталкиваться с этой cms при администрирование веб-серверов. У этой cms (как и у других) существует много проблем, и я бы хотел рассказать об одной из них, с которой столкнулся уже несколько раз — это большой размер, занимаемый сайтом на cms 1C-Битрикс:



Как системные администраторы сталкиваются с этой проблемой?

На одном из серверов, которые находятся у меня на администрировании, посыпались ошибки БД. Практически сразу было выяснено, что причина ошибок — отсутствие свободного места на хостинге. Почистив ненужные файлы и временно вернув работоспособность серверу, я сел думать, что можно удалить еще? Проблема осложнялась тем, что хостер не мог увеличить размер раздела, то есть выход оставался один — освобождать место удалением файлов, либо переносом сайтов с сервера.

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

  • Во первых, платформа Битрикс компенсирует проблемы производительности, используя кэш, который при дефолтных настройках представляет собой файловый кэш в папке сайта. Это объясняет регулярное увеличение занимаемого дискового пространства на хостинге. Это составляло большую проблему на старых версиях платформы, доходило до того, что сайт размером ~200Мб создавал кэш размеров в ~600Мб. Точно утверждать не могу, но у меня сложилось ощущение, что такое поведение было исправлено только в версии 14.0
  • Во вторых, сам дистрибутив 1С-Битрикс содержит много лишних файлов. В частности это — несколько демо-сайтов для разработчиков в каждом дистрибутиве платформы. Опытные разработчики сразу удаляют их (папки /bitrix/wizards/bitrix/demo, /bitrix/modules/bitrix.eshop, /bitrix/modules/bitrix.sitecorporate), но это происходит далеко не всегда.

Проведем небольшой опыт.
Разворачиваем пустой сайт, используя скрипт bitrixsetup.php с официального сайта. Для установки выбираем версию «Малый бизнес». Выбор кодировки — cp1251

После установки сайт, абсолютно не содержащий контента занимает ~366Мб.

366M new

Из них демо-данные занимают ~108Мб
55M new/bitrix/wizards
11M new/bitrix/modules/bitrix.sitecorporate
42M new/bitrix/modules/bitrix.eshop

Примерное число сайтов на хостинге у нас около ста. Таким образом, удалив соответствующие папки, мы освобождаем около 10Гб дискового пространства. Хочу отметить, что данные каталоги так же попадают в архивы резервных копий, создаваемые в папке сайта, увеличивая их на 50-100Мб.

На скорую руку был написан скрипт для поиска проблемных папок на сервере, которым мне бы и хотелось поделиться:

#!/bin/bash

if [ -z "$1" ];
then
	echo "please, use this with web-root path as first argument"
	echo "for removing files use --remove as second argument"
	exit 1
fi

#путь к web-root
path=$1


find $path -name "wizards" -prune -type d -print0 | grep -FzZ 'bitrix/wizards' |  xargs --null -0 du -sh
find $path -name "bitrix.sitecorporate" -prune -type d -print0 |  xargs --null -0 du -sh

if [[ "$2" == "--remove" ]];
then
	find $path -name "wizards" -prune -type d -print0 | grep -FzZ 'bitrix/wizards' |  xargs --null -0 rm -rf
	find $path -name "bitrix.sitecorporate" -prune -type d -print0 |  xargs --null -0 rm -rf
fi

exit 0

Скрипт запускается с параметром, содержащим путь к папке, в которой будет происходить поиск.
При указании вторым параметром --remove, найденные папки будут автоматически удалены.

habr.com

1С-Битрикс. Как массово и достаточно быстро удалить все разделы в инфоблоке?

При большом количестве разделов (30к+), Bitrix начинает вставлять палки в колеса как разработчику, так и пользователю, который будет работать с такими ИБ.
- Списки элементов ИБ будут безбожно тормозить в интерфейсе. На каждом хите будет добавляться фильтр по разделу.
- Редактировать их становится очень затруднительно, опять же из за долгой загрузки интерфейса и большого времени изменения.

Всё это из за того что разделы это NESTED SETS деревья. При добавлении/удалении раздела происходит вычисление LEFT_MARGIN и RIGHT_MARGIN для каждого раздела во всем инфоблоке.

Для добавления и обновления (CIBlockSection::Add, CIBlockSection::Update) есть параметр метода $bResort, который позволяет отключить этот перерасчёт в момент их выполнения.
Только после этого ОБЯЗАТЕЛЬНО надо выполнять CIBlockSection::Resort.

Это можно использовать при большом количестве операций Update и Add. Сначала выполняете все операции Update и Add с $bResort=false, а после них CIBlockSection::Resort

НО!! К сожалению, такой параметр для CIBlockSection::Delete не доступен. И вот тут начинается жесть.
Каждый вызов CIBlockSection::Delete, это:

  • пересчет границ NESTED SETS,
  • CIblockElement::GetList (поиск вложенных элементов)
  • CIblockElement::Delete (если в разделе были элементы),
  • Запрос к таблице которая хранит множественные привязки элемента к разделам (поиск значений и их удаление)
  • CIBlockSection::GetList (поиск вложенных разделов)
  • CIBlockSection::Delete (удаление вложенных разделов)
  • Переиндексирование поиска
  • Запросы к UF_* полям раздела (поиск значений и их удаление)
  • При заполненных SEO полях, запросы к таблицам которые их хранят (поиск значений и их удаление)
  • При расширенном управлении правами это еще запросы к таблицам которые хранят эти настройки (поиск значений и их удаление)

и это скорее всего не полный список, а только то что могу назвать по памяти....

Нельзя быстро удалить разделы стандартным API без написания своих запросов к БД которые проделают всё что описано выше. В идеале надо взять код стандартного CIBlockSection::Delete, внимательно его изучить и написать свой метод который будет с помощью прямых запросов делать тоже самое, но оптимально.

Если же вопрос стоит в том чтобы удалить эти разделы за ЛЮБОЕ количество времени, тогда можно написать страничку с пошаговым удалением разделов, через ajax запросы. Причем надо учитывать, что вначале разделы будут удаляться ОЧЕНЬ медленно и ajax запрос может отвалиться по таймауту, поэтому надо будет за один шаг удалять пару разделов. А ближе к границе в 10к разделов, за один шаг можно будет удалять уже большее количество.

qna.habr.com

1С-Битрикс Разработчикам - Если на хостинге закончилось место

Может возникать ситуация, когда сайт занимает много места на хостинге без видимых причин. Существуют графические утилиты, визуально отображающие занятое пространство, но использовать их на дальнем сервере не всегда представляется возможным.
Для этого есть системная утилита unix du. Выводит размер папки или всех подпапок.
Набросал небольшой скрипт, который через удаленную командную строку (ssh) визуально отображает занятое пространство в текущей папке. Используются только системные утилиты unix с тем чтобы он работал на большинстве хостингов.

N.B. Внизу поста скрипт на php!

Если есть ssh доступ

Скачиваем zip архив, записываем на сайт. Далее подключаемся по ssh (для этого есть замечательная программа PuTTy).
Перед запуском скрипта надо сделать его исполняемым:

Затем переходим в ту папку, размер которой нужно посчитать и запускаем скрипт, отобразится примерно следующее:

Разными цветами обозначаются разные уровни вложенности.

Размер текущей папки взят за 100%, показаны все папки и файлы внутри текущей, размер которых превышает 10%. Можно установить свой минимум. Например, если надо отобразить все файлы и папки, размером более 5% от текущей:

После первого запуска в папке /tmp создается файл с результатами сканирования размеров. Затем он используется для отображения. Если размеры изменились, используйте параметр -f чтобы принудительно пересчитать размеры:Можно одновременно пересчитать размеры и отобразить файлы/папки более указанного значения:
Скрипт ничего не удаляет, может быть использован на любой linux системе со стандартным набором служебных утилит: du, egrep, awk, cat, tac.

Дополнение от 06.11.2014

Можно сразу скачать скрипт на удаленный сервер через короткую ссылку:

wget http://bit.do/mydisk
chmod +x mydisk

Как узнать размер базы данных

Открываем страницу резервного копирования, переходим на вкладку Расширенные, там рядом с опцией "Архивировать базу данных" показан размер базы:

Тут же отображается размер данных статистики и поисковой индекс.

Если надо получить подробную информацию по таблицам, в настройках модуля "Монитор производительности" включаем опцию "Просмотр таблиц". Теперь можно перейти на страницу Настройки - Производительность - Таблицы и увидеть отдельно размер каждой таблицы.

P.S. Скрипт изначально делал для себя, решил поделиться. Вот теперь думаю: может для большинства удобнее было бы иметь скрипт на php чтобы работал через браузер? :)

Дополнение от 05.09.2011

Подсчет размеров файлов через браузер

Восполнил пробел и сделал аналогичный по функциональности скрипт mydisk.php, подсчитывающий размер файлов в текущей папке через браузер. Работает по шагам (т.е. ограничение на время выполнение скриптов не хостинге не будет мешать), результат сохраняет во временный файл.

screen324.png

С визуализацией не стал заморачиваться, фактически переписал код на php. Самым сложным оказалось - правильно сохранить промежуточный результат сканирования между шагами.

dev.1c-bitrix.ru

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

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