1 Отредактировано Ярослав (12.02.2016 14:44:12)

Тема: Оптимизация при заказе более 200 товаров.

Здравствуйте! Тут столкнулся с проблемной. Оптовый магазин канцелярки.
Имеются клиенты, которые кладут в корзину от 200 до 500 наименований товаров.
И при оформлении заказа сажают сервер (хотя выводит сообщение о необходимости дробить заказы)
Прямо после нажатия на "Оформить заказ" в корзине.
Сейчас конфигурация 4 ядра, 1 гб ОЗУ. На сервере только 1 сайт.
Количество товаров около 5000,  заказов в день около 25.

Что можно оптимизировать?

Как вариант, можно  запретить класть в корзину более 60 наименований.

Re: Оптимизация при заказе более 200 товаров.

У Вас последняя версия RS?

3

Re: Оптимизация при заказе более 200 товаров.

Уточните на какой стадии возникает проблема.
1. Долгий ответ сервера
2. Вообще нет ответа от сервера (превышение лимита по памяти или времени)
3. или браузер такое количество HTML долго рендерит

Если долгий ответ от сервера, то можно посмотреть что именно в объекте \shop\model\cart  больше всего занимает времени и возможно отключить какие-то операции, например, начисление скидок (если у вас они не используются конечно), начисление налогов, разделение сопутствующих товаров на отдельные товары.

Повысить оценку Понизить оценку

Re: Оптимизация при заказе более 200 товаров.

Александр, версия не последняя. Модуль магазина 2.0.0.86 .  Вопрос о необходимости обновления я поднял перед заказчиком. Но когда все работает, кроме данного момента, трогать как то не хочется)))
==========
Комплектации не используют, скидок нет (привязываются типы цен к пользователям), сопутствующих нет.
В зависимости от количества товара в корзине, или долгий ответ или превышается лимит выполнения скрипта(я поднял выше стандартного).
Все три пункта))

Раз не доходит и до адреса, значит где то в actionIndex() контроллера заказа рубится.
Пока закомментировал сопутствующие и склеивание одинаковых.

 function actionIndex()
    {
        $this->order->clear();
                 
        //Замораживаем объект "корзина" и привязываем его к заказу
        $frozen_cart = \Shop\Model\Cart::preOrderCart(null);
        //eventus нет сопутcтвующих
        //$frozen_cart->splitSubProducts();
        //$frozen_cart->mergeEqual();
        
        $this->order->linkSessionCart($frozen_cart);
        $this->order->setCurrency( \Catalog\Model\CurrencyApi::getCurrentCurrency() );
        $this->order['ip'] = $_SERVER['REMOTE_ADDR'];
        $this->order['expired'] = false;
        $this->redirect($this->router->getUrl('shop-front-checkout', array('Act' => 'address')));
    }

p.s.
Возможны ли дополнительные проблемы с нагрузкой из-за постоянного вызова deleteExpiredCartItems при добавлении в корзину? Оптовики как из пулемета "нащелкивают" товар в корзину)

Re: Оптимизация при заказе более 200 товаров.

Сейчас у нас версия 136.
У нас просто было большое обновление посвящённое как раз оптимизации и оптимизации по производительности корзины. Поэтому возможно это Вам поможет. Но это только потестировать надо, т.к. Вы первый которому понадобилось оптимизация в этой части. У нас был клиент тоже оптовик, из-за которого мы как раз и оптимизировали. Но вся загвоздка в том, что я не помню в какой точно версии было данное исправление.
Так, что я за обновление, т.к. и в последующих версиях были оптимизационные вещи, однако это всё индивидуально. Нужно пробовать.

Re: Оптимизация при заказе более 200 товаров.

На текущий момент жалоб нет. Правда я перестраховался и добавил 1 процессор в VDS.