Выдано 122907 лицензий

Ускорение минимального/максимального значения свойства

Ускорение минимального/максимального значения свойства
#
nikolajgromkov
Здравствуйте! Использую данную функцию для получения минимального и максимального значения свойств. В плане отдачи данных всё работает превосходно, но скорость обработки очень хромает.


public function addMinMaxProperty()
   {
      $iCurrentShopGroup = intval($this->group);
   
      $linkedObject = Core_Entity::factory('Shop_Item_Property_List', 3);
      $aProperties = $linkedObject->getPropertiesForGroup($iCurrentShopGroup);

      $oShop = $this->getEntity();
  
      foreach($aProperties as $current_property)
      {
      $aPropertyValues = '';
      $oProperty = Core_Entity::factory('Property', $current_property->id);

      $oShop_Items = $oShop->Shop_Items;
      $this->_applyItemConditionsQueryBuilder($oShop_Items->queryBuilder());

      $aShop_Items = $oShop_Items->getAllByShop_Group_Id($iCurrentShopGroup);            

      foreach($aShop_Items as $oShop_Item)
      {
         $oPropertyValue = $oProperty->getValues($oShop_Item->id, FALSE);

         if(isset($oPropertyValue[0]) and isset($oPropertyValue[0]->value))
         {
               $aPropertyValues[] = $oPropertyValue[0]->value;
         }
      }

      if(is_array($aPropertyValues))
      {
         $minPropertyValue = min($aPropertyValues);
         $maxPropertyValue = max($aPropertyValues);

         $this->addEntity(
               Core::factory('Core_Xml_Entity')
                        ->name('minPropertyValue')
                        ->value($minPropertyValue)
                        ->addAttribute('id', $current_property->id)
                  )
               ->addEntity(
                  Core::factory('Core_Xml_Entity')
                        ->name('maxPropertyValue')
                        ->value($maxPropertyValue)
                        ->addAttribute('id', $current_property->id)
               );
      }
               
      }

      return $this;
   }   


Что можно сделать для ускорения обработки такого запроса? Иногда сервер уже жалуется на недостаток памяти.
Пока на ум пришло только вручную задать список свойств, которые нужны для MIN/MAX, нужны только с отображением От и до. Есть ли какие-то способы диагностики? В каком именно месте проблема: в переборе свойств, в получение товаров, в вычислениях, цикл в цикле?
Помощь по HostCMS nivaks-studio.ru

ПрофильЦитировать выделенное13.05.2019 11:21:51 • Сообщений: 71
Re: Ускорение минимального/максимального значения свойства
#
EugenyP
Онлайн
nikolajgromkov,
Нужно собственно получать те доп. свойства у которых "отображать в фильтре" стоит "от до"

Ну и значения получать минуя ORM
HostDev.pw - модули для HostCMS

ПрофильЦитировать выделенное13.05.2019 12:48:44 • Сообщений: 756
Авторизация