Задать вопрос
bioid
@bioid

Как очистить корзину битрикс24, если в ней лежат удаленные файлы/сущности годовалой давности, несмотря на настройку «Удалять через 30 дней»?

Коробка.
Речь про удаление корзины "общего диска", а не какого-то отдельного пользователя.
При этом нет функционала выделить одним чекбоксом всё сразу и удалить.
663bb11b67b3f704741086.png
А функционал "Очистка корзины" выводит что нечего удалять, там пусто.
В корзине около 200 тысяч удаленных сущностей. Выделить можно только 100 за раз и удалить.
На всякий случай также скажу, что таблица b_recyclebin_data самая большая в БД и весит 11 ГБ. Следующая после нее по размеру идёт b_crm_act = 2.6 ГБ.
Как можно очистить корзину разом?
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@SergeySukhanov
За эту корзину отчевают таблицы

b_recyclebin
b_recyclebin_data
b_recyclebin_files

Собственно, варварский способ: truncate.

Способ для любителей проводить через ядро:

use Bitrix\Main\Loader;
use Bitrix\Recyclebin\Internals\Models\RecyclebinTable;


// Функция для удаления порции записей из корзины
function deleteRecycleBinRecords($limit = 50)
{
	Loader::includeModule('recyclebin');

    // Получаем IDs первых $limit записей из корзины
    $result = RecyclebinTable::getList([
        'select' => ['ID'], // Выбираем только ID
        'limit' => $limit,  // Ограничиваем выборку
        'order' => ['ID' => 'ASC'], // Сортируем по ID
    ]);

    $idsToDelete = [];
    while ($item = $result->fetch()) {
        $idsToDelete[] = $item['ID'];
    }

    if (empty($idsToDelete)) {
        echo "Корзина пуста.\n";
        return false; // Нет записей для удаления
    }

    // Удаляем каждую запись
    foreach ($idsToDelete as $id) {
		\Bitrix\Recyclebin\Recyclebin::remove($id);
    }

    return true; // Есть удаленные записи
}


deleteRecycleBinRecords(100);

echo "Корзина очищена.\n";


Можете написать своего агента, воткнуть в крон или позапускать пару тысяч раз в консоли.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы