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 либо по какой то причине метод вообще не отрабатывает).
Настройки, влияющие на размер этой таблицы расположены в настройках модуля «Интернет магазин»
«Время хранения просмотренных товаров (дней)» и «Максимальное количество просмотренных товаров пользователя».
После удаления желательно произвести оптимизацию БД.