Задавайте свои вопросы и отвечайте на вопросы других участников форума
Есть у меня скриптик, писал для себя
array( 'FUSER_ID' ), 'filter' => array( 'ORDER_ID' => 'NULL', '<=DATE_INSERT' => $date ), ) ); while($bItem = $obBasket->Fetch()){ $arResult[] = $bItem; CSaleBasket::DeleteAll( $bItem['FUSER_ID'], False ); } print "";print_r(count($arResult));print ""; $num = $_REQUEST['num'] - 1; header("refresh: 3; url=https://site.ru/adev/15.php?num=".$num); ?>
Вставьте код приведенный выше в файл /adev/15.php на вашем сайте и запустите из браузера и будет вам счастье
Надеюсь все детали скрипта интуитивно понятны
И куда его вставить?
Понимаю твою проблему с "брошенными" корзинами, сам сталкивался с таким. В Битриксе штатная настройка "Сохранять корзину (дней)" часто не срабатывает как надо, и корзин накапливается очень много.
Есть несколько способов решения этой задачи через API 1С-Битрикс, не прибегая к прямым запросам в базу данных. Вот пример скрипта, который можно использовать:
Код
array( 'FUSER_ID' ), 'filter' => array( 'ORDER_ID' => 'NULL', ), ) ); while($bItem = $obBasket->Fetch()){ CSaleBasket::DeleteAll( $bItem['FUSER_ID'], False ); } ?>
Этот скрипт получает все корзины, которые не привязаны к заказам (то есть брошенные), и удаляет их. Для удаления используется FUSER_ID – ID пользователя, владеющего корзиной.
Чтобы удалять только корзины старше определенного периода, можно добавить фильтр по дате:
Код
array( 'FUSER_ID' ), 'filter' => array( 'ORDER_ID' => 'NULL', '<=DATE_INSERT' => $date ), ) ); while($bItem = $obBasket->Fetch()){ CSaleBasket::DeleteAll( $bItem['FUSER_ID'], False ); } ?>
В этом скрипте $date содержит дату, три месяца назад от текущей даты. В фильтре '<=DATE_INSERT' => $date указывается, что нужно выбирать корзины, у которых дата создания меньше или равна этой дате. Чтобы изменить период, поменяй число 90 на нужное количество дней.
Как говорил Джаред Гилмор, главное – не забывать делать бэкапы перед такими операциями!
Этот скрипт можно запускать вручную, либо настроить как консольный скрипт и запускать по расписанию через cron.
Ещё как вариант, можно попробовать использовать готовые решения или модули из Marketplace Битрикса, специально предназначенные для очистки брошенных корзин.