Автор Тема: Большое количество комбинаций  (Прочитано 124 раз)

26 Декабрь 2017, 23:11:58
  • Старожил
  • ****
  • Сообщений: 368
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сделали много комбинаций с изменением цены, и ещё плюс скидки на все комбинации со своей ценой https://magicshopping.su/goroda/8-fotoshtory-vechernij-gorod.html, ответ от сервера идёт более 40 сек.На хостинге написали- Сделал трассировку процесса загрузки страницы
Из нее видно, что процесс подвисает примерно на 1 сек на запросах видаSELECT ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name,\n\t\t\t\t\ta.`id_attribute`, al.`name` AS attribute_name, a.`color` AS attribute_color, product_attribute_shop.`id_product_attribute`,\n\t\t\t\t\tIFNULL(stock.quantity, 0) as quantity, product_attribute_shop.`price`, product_attribute_shop.`ecotax`, product_attribute_shop.`weight`,\n\t\t\t\t\tproduct_attribute_shop.`default_on`, pa.`reference`, product_attribute_shop.`unit_price_impact`,\n\t\t\t\t\tproduct_attribute_shop.`minimal_quantity`, product_attribute_shop.`available_date`, ag.`group_type`\n\t\t\t\tFROM `ps_mproduct_attribute` pa\n\t\t\t\t INNER JOIN ps_mproduct_attribute_shop product_attribute_shop\n\t\tON (product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = 1)\n\t\t\t\t LEFT JOIN ps_mstock_available stock\n\t\t\tON (stock.id_product = pa.id_product AND stock.id_product_attribute = IFNULL(`pa`.id_product_attribute, 0) AND stock.id_shop = 1  AND stock.id_shop_group = 0  )\n\t\t\t\tLEFT JOIN `ps_mproduct_attribute_combination` pac ON (pac.`id_product_attribute` = pa.`id_product_attribute`)\n\t\t\t\tLEFT JOIN `ps_mattribute` a ON (a.`id_attribute` = pac.`id_attribute`)\n\t\t\t\tLEFT JOIN `ps_mattribute_group` ag ON (ag.`id_attribute_group` = a.`id_attribute_group`)\n\t\t\t\tLEFT JOIN `ps_mattribute_lang` al ON (a.`id_attribute` = al.`id_attribute`)\n\t\t\t\tLEFT JOIN `ps_mattribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group`)\n\t\t\t\t INNER JOIN ps_mattribute_shop attribute_shop\n\t\tON (attribute_shop.id_attribute = a.id_attribute AND attribute_shop.id_shop = 1)\n\t\t\t\tWHERE pa.`id_product` = 54\n\t\t\t\t\tAND al.`id_lang` = 1\n\t\t\t\t\tAND agl.`id_lang` = 1\n\t\t\t\tGROUP BY id_attribute_group, id_product_attribute\n\t\t\t\tORDER BY ag.`position` ASC, a.`position` ASC, agl.`name` ASCЧто- то с этим можно сделать?
27 Декабрь 2017, 11:31:20
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 15207
  • Репутация: +14590/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Можете хостинг поменять на vps. Можете блок многоуровневой навигации заменить на другой модуль Advanced Search или похожий.
Когда фильров много то хостинг нужен хороший, минимум vps с 2 ядрами и 4 гб памяти.
27 Декабрь 2017, 16:33:19
Ответ #2
  • Старожил
  • ****
  • Сообщений: 368
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Думаете это в фильтре многоуровневой навигации проблема? Самая большая задержка происходит при переходе на страницу продукта, там сортируется по комбинациям атрибутов тоже через этот модуль?Включила профилирование, больше всего времени и количество запросов идёт сюдаSELECT SQL_NO_CACHE ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name,
a.`id_attribute`, al.`name` AS attribute_name, a.`color` AS attribute_color, product_attribute_shop.`id_product_attribute`,
IFNULL(stock.quantity, 0) as quantity, product_attribute_shop.`price`, product_attribute_shop.`ecotax`, product_attribute_shop.`weight`,
product_attribute_shop.`default_on`, pa.`reference`, product_attribute_shop.`unit_price_impact`,
product_attribute_shop.`minimal_quantity`, product_attribute_shop.`available_date`, ag.`group_type`
FROM `ps_mproduct_attribute` pa
INNER JOIN ps_mproduct_attribute_shop product_attribute_shop
ON (product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = 1)
LEFT JOIN ps_mstock_available stock
ON (stock.id_product = pa.id_product AND stock.id_product_attribute = IFNULL(`pa`.id_product_attribute, 0) AND stock.id_shop = 1  AND stock.id_shop_group = 0  )
LEFT JOIN `ps_mproduct_attribute_combination` pac ON (pac.`id_product_attribute` = pa.`id_product_attribute`)
LEFT JOIN `ps_mattribute` a ON (a.`id_attribute` = pac.`id_attribute`)
LEFT JOIN `ps_mattribute_group` ag ON (ag.`id_attribute_group` = a.`id_attribute_group`)
LEFT JOIN `ps_mattribute_lang` al ON (a.`id_attribute` = al.`id_attribute`)
LEFT JOIN `ps_mattribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group`)
INNER JOIN ps_mattribute_shop attribute_shop
ON (attribute_shop.id_attribute = a.id_attribute AND attribute_shop.id_shop = 1)
WHERE pa.`id_product` = 8
AND al.`id_lang` = 1
AND agl.`id_lang` = 1
GROUP BY id_attribute_group, id_product_attribute
ORDER BY ag.`position` ASC, a.`position` ASC, agl.`name` ASC
28 Декабрь 2017, 12:12:47
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 21474
  • Репутация: +25289/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
По модулю blocklayered много информации на форуме.
Вот несколько ссылок
https://prestashop-forum.ru/index.php/topic,4379.msg25520.html
https://prestashop-forum.ru/index.php/topic,4083.msg23459.html
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
29 Декабрь 2017, 05:28:40
Ответ #4
  • Старожил
  • ****
  • Сообщений: 368
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вопрос то не про модуль , а про большое количество комбинаций и как решить вопрос с большим количеством запросов из-за этого.Модуль этот можно вообще отключить, ситуация не меняется. Проблема именно с загрузкой страницы продукта.
29 Декабрь 2017, 11:54:48
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 15207
  • Репутация: +14590/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Что за таблицы - "ps_mp..." ? Скорее всего в них проблема
29 Декабрь 2017, 13:02:45
Ответ #6
  • Старожил
  • ****
  • Сообщений: 368
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это в конфигурации прописыватся, любой префикс можно прописать или нет
<?php
define
('_DB_SERVER_''localhost');
define('_DB_NAME_''lapr_su');
define('_DB_USER_''root');
define('_DB_PASSWD_''');
define('_DB_PREFIX_''ps_m');
define('_MYSQL_ENGINE_''InnoDB');
define('_PS_CACHING_SYSTEM_''CacheMemcache');
define('_PS_CACHE_ENABLED_''0');
define('_COOKIE_KEY_''diW01YUuR4zpPzWjKaaTtvjCv7xH0nFi3uFRiPrF2wZkhQccgYqZIyiE');
define('_COOKIE_IV_''pCm0UNAK');
define('_PS_CREATION_DATE_''2015-08-01');
define('_PS_VERSION_''1.6.1.17');
define('_RIJNDAEL_KEY_''2AEnQrs5Li4QDB5jaiBIauzr16tpGcSZ');
define('_RIJNDAEL_IV_''hOs9iRnRIs1bfrhCn7ercA==');
define('_PS_DIRECTORY_''/../../');