• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
rolling

Тормозит подсчет кол-ва товара в категориях

Рекомендуемые сообщения

rolling    0

Добрый день!

В последнее время сайт стал заметно подтормаживать. На сайте сбоку висит модуль отражающий список корневых категорий и количество товаров в них (из подкатегорий тоже).

Выяснил, что при загрузке страницы БД получает более 500 запросов вида

SELECT COUNT(DISTINCT p.product_id) AS total
FROM product p
LEFT JOIN product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id)
WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '410')
или еще более развлетвленные.

Выяснил, что эти цифры выдает функция getTotalProducts() в файле /catalog/model/catalog/product.php И если закоментить текст функции - сайт сразу оживает.

Подскажите, может кто-то уже стыкался с такой проблемой? Может есть более удачные методы подсчета кол-ва товара в категориях?

Буду очень признателен за любую помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EVMedvedev    211

Добрый день!

В последнее время сайт стал заметно подтормаживать. На сайте сбоку висит модуль отражающий список корневых категорий и количество товаров в них (из подкатегорий тоже).

Выяснил, что при загрузке страницы БД получает более 500 запросов вида

SELECT COUNT(DISTINCT p.product_id) AS total
FROM product p
LEFT JOIN product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id)
WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '410')
или еще более развлетвленные.

Выяснил, что эти цифры выдает функция getTotalProducts() в файле /catalog/model/catalog/product.php И если закоментить текст функции - сайт сразу оживает.

Подскажите, может кто-то уже стыкался с такой проблемой? Может есть более удачные методы подсчета кол-ва товара в категориях?

Буду очень признателен за любую помощь.

Можно доработать движок так, чтобы дерево категорий генерировалось при редактировании категорий и при добавлении товаров. А во фронте грузить уже готовый HTML код. Тогда все будет летать. Но переделок понадобится много.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От louise170


      Просмотр файла Валюта плюс
      Модуль дает возможность указывать в товарах базовую цену в разных валютах - это бывает необходимо, если вы торгуете товарами иностранных производителей и соотв. ваши цены сильно зависят от колебания курсов валют. На вкладке Данные после поля "Цена" появляются два поля Базовая цена и Базовая валюта туда можно прописать цену в нужной вам валюте. Аналогично для опций, акций и скидок тоже добавляются поля для Базовой цены. Далее все цены из полей базовой цены переводятся по курсу в основную валюту магазина в стандартные поля цен.
      Возможности:
      Если в настройках модуля стоит автоматическое обновление валют, модуль сам при заходе в админку автоматически обновляет курсы валют раз в сутки с сайта выбранного вами (по умолчанию ЦБ РФ) и меняет все цены на товары, у которых базовая цена больше нуля. Можно не использовать автообновление, а задавать курсы руками и обновлять цены товаров по нажатию кнопки "Обновить цены товаров" на странице модуля. Настройка запуска обновления курсов и цен по крону. Для каждой из валют можно задать процент коррекции курса. Для разных производителей можно задать разные курсы валют. Любой валюте можно задать курс руками и поставить галочку, чтобы при обновлении этот курс не менялся. Базовую валюту в скобках на страницах сайта можно отображать или не отображать, для этого есть чекбоксы в настройках модуля, они появляются в настройках, если вы используете currency_plus_frontend.xml Все цены из базовых по курсу переводятся в стандартные поля для цен, поэтому далее с товарами могут работать любые другие модули в обычном режиме, например, фильтровать или сортировать товары по цене. Различные виды округления получающихся цен. Получение курсов валют возможно с одного из шести сайтов разных банков. Модуль Валюта плюс совместим с модулем Управление ценами.
      Модуль Валюта плюс совместим с модулем Option To Product.
      Версия модуля Валюта плюс для Опенкарт 1.5.x совместим с модулем Связанные опции.
      Также модуль может совместно работать с модулями экспорта-импорта товаров:
      Автоматическая обработка прайс-листов CSV Price Pro import/export (нужно на вкладке Макросы создать поля для базовой цены и валюты) Версия модуля Валюта плюс для Опенкарт 1.5.x совместима с модулем Batch Editor 0.2.3
      Никакие системные файлы не затираются, модуль работает на vqmod/ocmod.
      Модуль тестировался на:
      Opencart
      1.5.1.3 1.5.2.1 1.5.3.1 1.5.4.1 1.5.5.1.1 1.5.6 1.5.6.4 2.0.1.1 2.0.3.1 2.1.0.1 2.1.0.2 2.2.0.0 2.3.0.2 MaxyStore
      1.5.4.1 1.5.5.1 2.0.1.1 Поддерживаемые языки:
      русский украинский английский Пример работы модуля:
      http://ocstore1541.opencartplus.ru/
      http://opencart2.opencartplus.ru/
      Демо админки:
      http://ocstore1541.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      доступ
      demo / demo
      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
      Требования к серверу
      На хостинге должен быть PHP 5.3 или выше. Также должен быть установлен ionCube Loader версии 5.0 или выше. Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php Для корректной работе на Опенкарте 1.5.х на вашем сайте должен быть установлен VQMOD не ниже версии 2.4.1, если у вас стоит версия ниже - нужно обновиться отсюда: https://github.com/vqmod/vqmod/releases Если вы собираетесь получать курсы валют автоматически с выбранного сайта то необходимо, чтобы на вашем сервере был включен curl. FAQ
      FAQ по модулю "Валюта плюс" Добавил louise170 Добавлено 05.02.2014 Категория Прочее Системные требования PHP 5.3+, IonCube Loader версии 5.0+, CURL, для Опенкарта 1.5.х - VQMOD не ниже версии 2.4.1 Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От louise170
      Модуль дает возможность указывать в товарах базовую цену в разных валютах - это бывает необходимо, если вы торгуете товарами иностранных производителей и соотв. ваши цены сильно зависят от колебания курсов валют. На вкладке Данные после поля "Цена" появляются два поля Базовая цена и Базовая валюта туда можно прописать цену в нужной вам валюте. Аналогично для опций, акций и скидок тоже добавляются поля для Базовой цены. Далее все цены из полей базовой цены переводятся по курсу в основную валюту магазина в стандартные поля цен.
      Возможности:
      Если в настройках модуля стоит автоматическое обновление валют, модуль сам при заходе в админку автоматически обновляет курсы валют раз в сутки с сайта выбранного вами (по умолчанию ЦБ РФ) и меняет все цены на товары, у которых базовая цена больше нуля. Можно не использовать автообновление, а задавать курсы руками и обновлять цены товаров по нажатию кнопки "Обновить цены товаров" на странице модуля. Настройка запуска обновления курсов и цен по крону. Для каждой из валют можно задать процент коррекции курса. Для разных производителей можно задать разные курсы валют. Любой валюте можно задать курс руками и поставить галочку, чтобы при обновлении этот курс не менялся. Базовую валюту в скобках на страницах сайта можно отображать или не отображать, для этого есть чекбоксы в настройках модуля, они появляются в настройках, если вы используете currency_plus_frontend.xml Все цены из базовых по курсу переводятся в стандартные поля для цен, поэтому далее с товарами могут работать любые другие модули в обычном режиме, например, фильтровать или сортировать товары по цене. Различные виды округления получающихся цен. Получение курсов валют возможно с одного из шести сайтов разных банков. Модуль Валюта плюс совместим с модулем Управление ценами.
      Модуль Валюта плюс совместим с модулем Option To Product.
      Версия модуля Валюта плюс для Опенкарт 1.5.x совместим с модулем Связанные опции.
      Также модуль может совместно работать с модулями экспорта-импорта товаров:
      Автоматическая обработка прайс-листов CSV Price Pro import/export (нужно на вкладке Макросы создать поля для базовой цены и валюты) Версия модуля Валюта плюс для Опенкарт 1.5.x совместима с модулем Batch Editor 0.2.3
      Никакие системные файлы не затираются, модуль работает на vqmod/ocmod.
      Модуль тестировался на:
      Opencart
      1.5.1.3 1.5.2.1 1.5.3.1 1.5.4.1 1.5.5.1.1 1.5.6 1.5.6.4 2.0.1.1 2.0.3.1 2.1.0.1 2.1.0.2 2.2.0.0 2.3.0.2 MaxyStore
      1.5.4.1 1.5.5.1 2.0.1.1 Поддерживаемые языки:
      русский украинский английский Пример работы модуля:
      http://ocstore1541.opencartplus.ru/
      http://opencart2.opencartplus.ru/
      Демо админки:
      http://ocstore1541.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      доступ
      demo / demo
      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
      Требования к серверу
      На хостинге должен быть PHP 5.3 или выше. Также должен быть установлен ionCube Loader версии 5.0 или выше. Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php Для корректной работе на Опенкарте 1.5.х на вашем сайте должен быть установлен VQMOD не ниже версии 2.4.1, если у вас стоит версия ниже - нужно обновиться отсюда: https://github.com/vqmod/vqmod/releases Если вы собираетесь получать курсы валют автоматически с выбранного сайта то необходимо, чтобы на вашем сервере был включен curl. FAQ
      FAQ по модулю "Валюта плюс"
    • От louise170


      Просмотр файла Группы товаров
      Модуль "Группы товаров" позволяет создавать различные комбинации групп товаров в зависимости от категорий и производителей или
      произвольного набора товаров. Эти группы в дальнейшем можно использовать в др. модулях: доставки, оплаты, в акциях, текстах для товаров, в общем везде, где нужен быстрый выбор определенных списков товаров. Совместимость с разными модулями по мере возможности будет добавляться.
      Также группы товаров могут выводить в отдельные блоки, аналогично стандартным модулям последние, рекомендуемые и т.п. Товары из отдельной группы также могут выводиться на отдельную страницу аналогично тому как товары выводятся в каталоге.
      Сейчас модуль "Группы товаров" совместим с модулями:
      Почта России Доставка плюс Оплата плюс Управление ценами Тексты для товаров Никакие системные файлы не затираются, модуль использует vqmod/ocmod.
      Модуль тестировался на Opencart
      1.5.4.1 1.5.6 1.5.6.4 2.0.0.0 2.0.1.1 2.0.3.1 2.1.0.1 2.3.0.2 Поддерживаемые языки:
      русский Пример работы модуля:
      http://ocstore156.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      http://ocstore2302.opencartplus.ru/admin/
      доступ
      demo / demo
      Пример отображения группы на сайте:
      http://ocstore156.hypnoguru.ru/pr_apple
      http://opencart2.opencartplus.ru/group_some_products
      http://ocstore2302.opencartplus.ru/appleprod
      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
      Требования к серверу
      На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 5.0). Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php
      FAQ
      FAQ по модулю Группы товаров.
      Добавил louise170 Добавлено 30.01.2015 Категория Модули Системные требования ionCube Loader 5+, PHP 5.3+ Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От louise170
      Модуль "Группы товаров" позволяет создавать различные комбинации групп товаров в зависимости от категорий и производителей или
      произвольного набора товаров. Эти группы в дальнейшем можно использовать в др. модулях: доставки, оплаты, в акциях, текстах для товаров, в общем везде, где нужен быстрый выбор определенных списков товаров. Совместимость с разными модулями по мере возможности будет добавляться.
      Также группы товаров могут выводить в отдельные блоки, аналогично стандартным модулям последние, рекомендуемые и т.п. Товары из отдельной группы также могут выводиться на отдельную страницу аналогично тому как товары выводятся в каталоге.
      Сейчас модуль "Группы товаров" совместим с модулями:
      Почта России Доставка плюс Оплата плюс Управление ценами Тексты для товаров Никакие системные файлы не затираются, модуль использует vqmod/ocmod.
      Модуль тестировался на Opencart
      1.5.4.1 1.5.6 1.5.6.4 2.0.0.0 2.0.1.1 2.0.3.1 2.1.0.1 2.3.0.2 Поддерживаемые языки:
      русский Пример работы модуля:
      http://ocstore156.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      http://ocstore2302.opencartplus.ru/admin/
      доступ
      demo / demo
      Пример отображения группы на сайте:
      http://ocstore156.hypnoguru.ru/pr_apple
      http://opencart2.opencartplus.ru/group_some_products
      http://ocstore2302.opencartplus.ru/appleprod
      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
      Требования к серверу
      На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 5.0). Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php
      FAQ
      FAQ по модулю Группы товаров.
    • От louise170


      Просмотр файла Управление ценами
      Модуль предназначен для массового изменения цен в товарах.

      Возможности
      Массовое изменение обычных цен в товарах и их опциях. Массовое создание или закрытие скидок и спец. предложений. При совместной работе с модулем Валюта плюс, можно изменять массово базовые цены, наценку и базовую валюту в товарах. Товары можно выбирать в зависимости от категории, производителя, а также от модели и артикула. Цена может меняться в обе стороны, как в плюс так и в минус. Цену можно менять на заданное значение или на заданную процентную величину. Можно задать массово конкретные цены, например, все товары по 1000 руб. Есть возможность задавать различные варианты округления полученных цен. При совместной работе с модулем Группы товаров, появляется возможность выбирать товары из определенной заранее созданной группы. В лог в краткой форме пишется история того, что было проделано с ценами.
      Модуль "Управление ценами" совместим с модулем Валюта Плюс - позволяет массово менять базовые цены и процент наценки в товарах.
      Модуль "Управление ценами" совместим с модулем Группы товаров. Если установлен модуль "Группы товаров", то вместо списка категорий и производителей в форме будет отображаться список активных групп товаров.
      Модуль "Управление ценами" совместим с модулем Связанные опции
      поскольку связка опций идет в отдельной вкладке, а дальше идет работа с обычными опциями, под которые доработки есть.
      Модуль "Управление ценами" совместим с модулем Option To Product
      можно управлять ценами и спец. предложениями в опциях, которые создаются через этот модуль.

      Никакие системные файлы не затираются, модуль использует vqmod/ocmod.

      Модуль тестировался
      на Opencart
      1.5.3.1 1.5.4.1 1.5.6 1.5.6.4 2.0.1.1 2.1.0.1 2.2.0.0 2.3.0.2
      Поддерживаемые языки:
      русский
       
      Пример работы модуля:
      http://ocstore1541.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      http://ocstore2302.opencartplus.ru/admin/
      доступ
      demo / demo

      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен.
      Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.

      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.

      Требования к серверу
      На хостинге должен быть PHP 5.3 или выше. На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 5.0). Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php В PHP должна быть включена работа функции file_get_contents. Добавил louise170 Добавлено 22.07.2014 Категория Модули Системные требования PHP 5.3+, IonCube Loader версии 5.0+, для Опенкарт 1.5.х - VQMOD не ниже версии 2.4.1 Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу