/ Bitrix24: очистка таблиц модуля Социальная сеть - socialnetwork

Bitrix24: очистка таблиц модуля Социальная сеть - socialnetwork

23 янв 2025
Дмитрий М.
383

Для очистки таблиц модуля socialnetwork существует штатный метод ClearOld.

// CSocNetLog::ClearOld()
// /bitrix/modules/socialnetwork/classes/mysql/log.php:303
 
public static function ClearOld($days = 90)
{
    global $DB;
 
    $days = (int)$days;
    if ($days <= 0)
    {
        return true;
    }
 
    $DB->Query("DELETE LC FROM b_sonet_log_comment LC INNER JOIN (SELECT L.TMP_ID FROM b_sonet_log L LEFT JOIN b_sonet_log_favorites LF ON L.ID = LF.LOG_ID WHERE LF.USER_ID IS NULL AND L.LOG_UPDATE < DATE_SUB(NOW(), INTERVAL ".$days." DAY)) L1 ON LC.LOG_ID = L1.TMP_ID", true);
    $DB->Query("DELETE LS FROM b_sonet_log_site LS INNER JOIN (SELECT L.ID FROM b_sonet_log L LEFT JOIN b_sonet_log_favorites LF ON L.ID = LF.LOG_ID WHERE LF.USER_ID IS NULL AND L.LOG_UPDATE < DATE_SUB(NOW(), INTERVAL ".$days." DAY)) L1 ON LS.LOG_ID = L1.ID", true);
    $DB->Query("DELETE LR FROM b_sonet_log_right LR INNER JOIN (SELECT L.ID FROM b_sonet_log L LEFT JOIN b_sonet_log_favorites LF ON L.ID = LF.LOG_ID WHERE LF.USER_ID IS NULL AND L.LOG_UPDATE < DATE_SUB(NOW(), INTERVAL ".$days." DAY)) L1 ON LR.LOG_ID = L1.ID", true)
 
    return $DB->Query("DELETE FROM b_sonet_log WHERE LOG_UPDATE < DATE_SUB(NOW(), INTERVAL ".$days." DAY)", true);
}

Указанные метод очищает данные в таблицах за выбранные период - в качестве аргумента функции передаётся период в днях данные старше которого требуется удалять. Если ничего не передано - будет выбран период по умолчанию в 90 дней: т.е будут удалены данные старше 90 дней.

  • b_sonet_log_comment
  • b_sonet_log_site
  • b_sonet_log_right
  • b_sonet_log

Подготовим скрипт для запуска cron-таски для регулярной очистки таблиц

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__) . "/..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
 
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
define("NO_AGENT_CHECK", true);
 
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
 
ini_set('ignore_user_abort', 1);
ini_set('max_execution_time', 3300);
ini_set('memory_limit', '1024M');
set_time_limit(3300);
 
if (!\Bitrix\Main\Loader::includeModule('socialnetwork')) {
    die('Не удалось подключить модуль socialnetwork');
}
 
CSocNetLog::ClearOld(90);

Повесив скрипт на cron-таску - получим регулярную очистку устаревших данных в таблицах модуля Социальной сети.

Статья была полезна? Поблагодарите автора.

Оглавление
    Самые читаемые
    #1С Битрикс, #Bitrix CMS, #.htaccess, #настройка редиректов
    4 авг 2019
    #bitrix:news, #сортировка, #фильтрация, #bitrix:catalog, #catalog.section, #news.list
    16 дек 2020
    #Хлебные крошки, #1С Битрикс, #Bitrix CMS, #bitrix:breadcrumbs, #component_epilog, #кэширование
    1 окт 2018
    #bitrix, #свойства элементов, #обработчик событий, #OnBeforeIBlockElementUpdate, #OnIBlockElementSetPropertyValues
    21 июл 2020
    #Bitrix CMS, #breadcrumb, #bitrix:breadcrumbs, #хлебные крошки, #настройка
    13 фев 2019
    #ресайз изображений, #1С Битрикс, #Bitrix CMS
    3 мар 2019
    #bitrix, #robots.txt, #sitemap.xml, #поддомены, #мультисайтовость
    16 окт 2018
    #bitrix, #bitrix:catalog.section, #скидки, #товары со скидкой, #страница скидок, #страница со скидками
    4 окт 2018
    #bitrix, #пользовательские свойства, #тип свойств, #привязка к элементам
    27 ноя 2019