Вход / Регистрация 0
г. Красноярск
Дубровинского 110, оф. 503

Очистка старых корзин

У посещаемых магазинов на битриксе часто накапливаются старые корзины, если посмотреть в БД - то часто видно что таблица "b_sale_fuser" имеет неприличный размер в несколько миллионов записей.
Решение: настроить крон по очистке.

<?
//for crontab
//$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../..");
//$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

CModule::IncludeModule("sale");
global $DB;

$cLimit= 10000;
$strSql = "SELECT ID FROM b_sale_fuser WHERE TO_DAYS(DATE_UPDATE)<(TO_DAYS(NOW())-30) LIMIT ".$cLimit;
$db_res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
while ($ar_res = $db_res->Fetch()){
   CSaleBasket::DeleteAll($ar_res["ID"], false);
   CSaleUser::Delete($ar_res["ID"]);
}
echo 'end!';
?>
Необходимо положить такой скрипт куда-нибудь на сервер, настроить переменную $_SERVER["DOCUMENT_ROOT"], задать частоту вызова и переменную $cLimit (в зависимости от нагрузки магазина).