Приветствую, форумчане и сочувствующие.
Помогите, пожалуйста, решить проблему с медленной работой корзины ИМ.
Суть в том, что при сохранении корзины методом $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();
|
Сначала грешили на скидки корзины, но после их удаления, скорость не изменилась.
Подскажите идеи куда копать, пожалуйста.