Приветствую, форумчане и сочувствующие.
Помогите, пожалуйста, решить проблему с медленной работой корзины ИМ.
Суть в том, что при сохранении корзины методом $basket->save(), при наличии в ней большого количества товаров (более 200), обнаруживается дикий тупняк. Периодически смотрим параллельно запросом
количество добавленных товаром и видим, что вначале все идет относительно хорошо - 15-20 товаров в секунду, но в дальнейшем наблюдается падение производительности до 2-3 товаров в секунду, а после 350-400 добавленных товаров, цифра падает до 1 товара в 1,5-2 секунды. Та же песня и при очистке корзины методом
Версия ИМ и УС последние, тестировалось в последней же VM Bitrix для VMware/
Корзина наполняется и сохраняется кодом:
В файле fill.txt коды товаров.
Сначала грешили на скидки корзины, но после их удаления, скорость не изменилась.
Подскажите идеи куда копать, пожалуйста.
Помогите, пожалуйста, решить проблему с медленной работой корзины ИМ.
Суть в том, что при сохранении корзины методом $basket->save(), при наличии в ней большого количества товаров (более 200), обнаруживается дикий тупняк. Периодически смотрим параллельно запросом
Код |
---|
sel ect count(*) fr om b_sale_basket b where b.FUSER_ID=5198528 |
Код |
---|
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID()); |
Корзина наполняется и сохраняется кодом:
Код |
---|
$siteId = \Bitrix\Main\Context::getCurrent()->getSite(); $basket = Sale\Basket::create($siteId); $intIDs = array_map('intVal', file('fill.txt', FILE_IGNORE_NEW_LINES)); foreach ($intIDs as $key) { $item = $basket->createItem("catalog", $key); $item->setFields(array( 'QUANTITY' => 1, 'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(), 'LID' => Bitrix\Main\Context::getCurrent()->getSite(), 'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider', )); } $basket->save(); |
Сначала грешили на скидки корзины, но после их удаления, скорость не изменилась.
Подскажите идеи куда копать, пожалуйста.