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

Как очистить битрикс24, но не всё?

Коробка. Работала 2 года. Сейчас чищу её.
Во фронте очистил диск полностью в экспертном режиме. Файлы почты тоже. Товаров никаких нет. По сути битра пустая заисключением сотрудников, и настроек всяких.
Однако каталог upload/crm занимает 35 ГБ.
И помимо этого БД, тоже занимает не мало для пустой системы.
Вот вывод ncdu /var/lib/mysql/sitemanager.
12,1 GiB [###########################]  b_mail_message.ibd
    8,7 GiB [###################        ]  b_recyclebin_data.ibd
    7,4 GiB [################           ]  b_crm_act.ibd
    2,7 GiB [#####                      ]  b_crm_event.ibd
    2,3 GiB [#####                      ]  b_mail_message_uid.ibd
    1,7 GiB [###                        ]  b_search_content_stem.ibd
    1,4 GiB [###                        ]  FTS_0000000000006149_000000000000d931_INDEX_1.ibd
  824,0 MiB [#                          ]  b_bp_tracking.ibd
  728,0 MiB [#                          ]  FTS_0000000000005e78_000000000000d2ad_INDEX_1.ibd
  580,0 MiB [#                          ]  FTS_0000000000005f94_000000000000d58a_INDEX_1.ibd
  572,0 MiB [#                          ]  b_search_content.ibd


То есть, таблицы b_mail_message и b_recyclebin_data (корзину чистил кстати) и b_crm_act занимают много места. Что-то не очистилось.
В админке битры24 в Сервисы - Почта - Письма тоже все удалил.

Как выяснить и главное как очистить эти три таблицы и каталог upload/crm от "мёртвых" данных?
  • Вопрос задан
  • 1721 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@alsagan
CMailBox::Delete($mailBoxID);
или вот такой еще вариант.
<?php
use Bitrix\Main\Loader;
use Bitrix\Mail\MailMessageTable;
use CMailMessage;

class DataCleaningHelper
{
/**
* Удаляет письма. Шаг выбора веса письма 1 Кб.
* @param float $Kb
* return string
*/
public static function delLargeEmails($Kb = 1)
{
Loader::includeModule('mail');
$size = $Kb * 1000;
$orm = [

'select' => ['ID'],
'filter' => ['>MESSAGE_SIZE' => $size]
];
$i = 0;
$res = MailMessageTable::GetList($orm);
while ($email = $res->Fetch()) {

CMailMessage::Delete($email['ID']);
$i++;
}

return 'Удалено писем: '.$i;
}

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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