Связаться с нами
По итогу аудита Битрикс24 получаем, что таблица b_calendar_event за 5 лет разрослась до объема 2,8Г. Данные устарели необходимо их удалить.
Для начала обратился к методу CCalendarEvent::getList, но как показала практика фильтрация в данном методе не работает, поэтому для поиска событий использовал другой метод EventTable::getList:
use Bitrix\Main\Loader;
use Bitrix\Calendar\Internals\EventTable;
Loader::includeModule('calendar');
$events = EventTable::getList([
'select' => ['ID'],
'filter' => [
'DELETED' => 'N', // Исключаем уже удаленные события
],
'order' => ['DATE_FROM' => 'ASC'], // Сортировка по дате
'limit' => 10, // Максимум 10 событий
]);
while ($event = $events->fetch()) {
$result = EventTable::delete($event['ID']); // Удаляем событие
if ($result->isSuccess()) {
echo "Событие с ID {$event['ID']} успешно удалено.
";
} else {
echo "Ошибка при удалении события с ID {$event['ID']}.
";
}
}