Когда-то (в ноябре 2010) я писал про особенность таблицы b_sale_fuser и ее разбухание на активных проектах http://dev.1c-bitrix.ru/community/web...blog/2323/ Скоро уже 4 года с момента выхода поста. А что же нового?
В этот раз я проанонсирую один из вариантов диагностики и чистки, а также вкратце покажу пример устранения одной из первопричин такого поведения. Ведь устранение причины - гораздо лучше борьбы с последствиями [spoiler] Итак. Инструменты диагностики и чистки Я снова встретил на нескольких своих проектах признаки разбухания b_sale_fuser На модерации находится модуль инспектор Я решил внести в него также функционал по диагностике и тестированию эффекта, когда чистка корзин не справляется с реальной скоростью их формирования Детали смотреть в посте http://dev.1c-bitrix.ru/community/web...blog/2323/
Что теперь можно будет сделать с помощью модуля. 1. в один клик определить все ли ок на проекте с таблицей b_sale_fuser
2. Произвести чистку, если это необходимо
P.S. Ссылку на модуль я прикреплю позже, как только он пройдет модерацию
И обещанный пример того, как можно устранить саму причину Внимание, источников разбухания может быть много и они уникальны на проектах, но есть и классика. Понять причину очень легко, если вы ознакомитесь с комментариями в документации к методу CSaleBasket::GetBasketUserID Именно он и есть - основной источник роста количества корзин, а следовательно и записей таблицы b_sale_fuser Однако, разработчики заложили в него небольшую хитрость, см комментарии в документации, которую мы и используем для борьбы с эффектом разбухания.
Итак самым плодовитыми в плане создания корзин (записей таблицы b_sale_fuser) по статистике является.... компонент малая корзина bitrix.basket.basket.small. Та самая вездесущая малая корзина Именно этот компонент под атаками ботов и прочей нежити (кстати, прутая посещаемость тоже может способствовать) и может не выдержать оборону.
говорят по сути о том, что надо или нет, но всегда для пользователя будет существовать уже готовая корзина. Даже если она на проекте не понадобится, ее нам создадут. Ну а боты... получат далеко не одну корзинку на душу населения.
Что мы сделаем используем спецпараметр, который запретит создание корзины, если ее не найдено и слегка модернизируем код, чтобы обеспечить его стабильность при использовании спецпараметра.
[ArgumentCountError] Too few arguments to function CAllSaleUser::DeleteOldAgent(), 0 passed in /home/bitrix/www/bitrix/modules/alexkova.fileinspector/admin/alexkova.fileinspector_fuser_step.php on line 20 and at least 1 expected (0) /home/bitrix/www/bitrix/modules/sale/general/basket.php:4085 #0: CAllSaleUser::DeleteOldAgent() /home/bitrix/www/bitrix/modules/alexkova.fileinspector/admin/alexkova.fileinspector_fuser_step.php:20 #1: require(string) /home/bitrix/www/bitrix/admin/alexkova.fileinspector_fuser_step.php:1
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».