1 2 3 4 5 6 7 8 9 10 |
global $DB; $viewed_time = COption::GetOptionString(«sale», «viewed_time», «90»); $viewed_time = IntVal($viewed_time); $strSql = «DELETE «. «FROM b_sale_viewed_product «. «WHERE TO_DAYS(DATE_VISIT) < (TO_DAYS(NOW()) — «.$viewed_time.«) LIMIT 10000000»; $db_res = $DB->Query($strSql, false, «File: «.__FILE__.« Line: «.__LINE__); |
Фактически это код метода CSaleViewedProduct::ClearViewed() с увеличенным лимитом (1000 -> 10000000), который можно запускать автономно через ком. строку PHP.
Лимит вообще можно убрать (но запускать ночью, в момент выполнения, сайт зависнет — на 5 миллионов записей у меня чистило где-то минут 10).
По идее метод очистки должен отрабатывать штатно, но у клиента почему-то таблица разрослась — пока решил почистить и понаблюдать причины.
(возможно как раз из-за маленького LIMIT либо по какой то причине метод вообще не отрабатывает).
Настройки, влияющие на размер этой таблицы расположены в настройках модуля «Интернет магазин»
«Время хранения просмотренных товаров (дней)» и «Максимальное количество просмотренных товаров пользователя».
После удаления желательно произвести оптимизацию БД.