Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

4000 товаров - сильно тормозит


maxxdev

Recommended Posts

Проект запущен на локалхост. Apache 2.2MySQL 5.14000 товаров295 категорийПри попытке открыть категорию или просмотреть товар, задержка примерно в 12 секунд!!!Куда копать?

Надіслати
Поділитися на інших сайтах


Индексация проблемы не решила 8-)

У меня на порядок больше категорий и товаров, только проставление индексов на категории улучшило ситуацию.
CREATE TABLE `oc_category` (  `category_id` INT(11) NOT NULL AUTO_INCREMENT,  `image` VARCHAR(255) DEFAULT NULL,  `parent_id` INT(11) NOT NULL DEFAULT '0',  `sort_order` INT(3) NOT NULL DEFAULT '0',  `date_added` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  `date_modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  `status` INT(1) NOT NULL DEFAULT '1',  PRIMARY KEY (`category_id`),  KEY `parent_id` (`parent_id`),  KEY `status` (`status`)) ENGINE=MYISAM AUTO_INCREMENT=110174 DEFAULT CHARSET=utf8
Надіслати
Поділитися на інших сайтах


Тормоза из-за ф-ии private function getCategories($parent_id, $level = 0) в catalogcontrollercommonheader.phpПока не совсем понятно ее назначение. Ф-я является рекурсивной и в каждой рекурсии идет обращение к БД.Если необходимо получить дерево категорий, то целесообразние написать 1 запрос SQL.PSЕсли тело ф-ии закоментить и всегда возвращать пустой массив, то на первый взгляд все работает корректно и БЕЗ каких либо томозов :lol:

Надіслати
Поділитися на інших сайтах


генерирует выпадающий список для поиска, если проблему решает, отключай и из header.tpl выкинь этот список (поиск будет вестись по всем категориям правда)

Надіслати
Поділитися на інших сайтах


Тормоза из-за ф-ии private function getCategories($parent_id, $level = 0) в catalogcontrollercommonheader.phpПока не совсем понятно ее назначение. Ф-я является рекурсивной и в каждой рекурсии идет обращение к БД.Если необходимо получить дерево категорий, то целесообразние написать 1 запрос SQL.PSЕсли тело ф-ии закоментить и всегда возвращать пустой массив, то на первый взгляд все работает корректно и БЕЗ каких либо томозов :lol:

Да, при большом кол-ве категорий из-за этого возникают тормоза, так как генерятся текстовые файлы, для кэширования, я бы правда переделал это не на текстовые файлы, а на что-то типа nosql. тогда бы это все летало.
Надіслати
Поділитися на інших сайтах


Улучшило насколько? Можно ссылку на ваш магазин?

Магазин http://knigiua.com категорий до 6 тыс. товаров 46647.
Вам, наверно, тоже было бы логично убрать этот ниспадающий список, все равно найти в нем нужную категорию не представляется возможным =)
Надіслати
Поділитися на інших сайтах


Тормоза из-за ф-ии private function getCategories($parent_id, $level = 0) в catalogcontrollercommonheader.phpПока не совсем понятно ее назначение. Ф-я является рекурсивной и в каждой рекурсии идет обращение к БД.Если необходимо получить дерево категорий, то целесообразние написать 1 запрос SQL.PSЕсли тело ф-ии закоментить и всегда возвращать пустой массив, то на первый взгляд все работает корректно и БЕЗ каких либо томозов :lol:

Да, при большом кол-ве категорий из-за этого возникают тормоза, так как генерятся текстовые файлы, для кэширования, я бы правда переделал это не на текстовые файлы, а на что-то типа nosql. тогда бы это все летало.
На это можно рассчитывать? Было бы здорово! :lol:
Надіслати
Поділитися на інших сайтах


Индексация проблемы не решила :lol:

У меня на порядок больше категорий и товаров, только проставление индексов на категории улучшило ситуацию.
CREATE TABLE `oc_category` (  `category_id` INT(11) NOT NULL AUTO_INCREMENT,  `image` VARCHAR(255) DEFAULT NULL,  `parent_id` INT(11) NOT NULL DEFAULT '0',  `sort_order` INT(3) NOT NULL DEFAULT '0',  `date_added` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  `date_modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  `status` INT(1) NOT NULL DEFAULT '1',  PRIMARY KEY (`category_id`),  KEY `parent_id` (`parent_id`),  KEY `status` (`status`)) ENGINE=MYISAM AUTO_INCREMENT=110174 DEFAULT CHARSET=utf8
Позвольте поинтересоваться, зачем вы создаете первичный ключ и ещё два ключа? Разве для индексации это необходимо?В созданной мною теме (viewtopic.php?f=15&t=903&p=5659) синтаксис индексации БД отличается от вашего. Какое решение правильнее? И ещё, зачем указывать это:ENGINE=MYISAM AUTO_INCREMENT=110174 DEFAULT CHARSET=utf8 ?Спасибо за внимание
Надіслати
Поділитися на інших сайтах

Насколько я понял, это идентичные запросы:ALTER TABLE oc_product ADD INDEX i_product_id (product_id); иKEY `oc_product ` (`oc_product `)Правильно?И ещё вопрос по поводу авто-инкремента: зачем такое число большое? Можно же было начать с единицы, если уж по новой создается таблица?

Надіслати
Поділитися на інших сайтах

Неужели никто не знает? Это же архиважный вопрос — повышение производительности магазина, его бы стоило осветить максимально подробно.

Надіслати
Поділитися на інших сайтах

Насколько я понял, это идентичные запросы:ALTER TABLE oc_product ADD INDEX i_product_id (product_id); иKEY `oc_product ` (`oc_product `)Правильно?И ещё вопрос по поводу авто-инкремента: зачем такое число большое? Можно же было начать с единицы, если уж по новой создается таблица?

1. Идентичны. Но по умолчанию product_id является первичным ключом и уже индексирован. Поэтому в данном случае у вас получится 2 одинаковых индекса.2. Авто инкремент такой начинается с единицы, но когда вы переносите Бд, то автоинкримент начинается с последнего id в базе.Что тормозит я уже описал, отключите эту функцию и почувствуйте разницу.
Надіслати
Поділитися на інших сайтах


Насколько я понял, это идентичные запросы:ALTER TABLE oc_product ADD INDEX i_product_id (product_id); иKEY `oc_product ` (`oc_product `)Правильно?И ещё вопрос по поводу авто-инкремента: зачем такое число большое? Можно же было начать с единицы, если уж по новой создается таблица?

1. Идентичны. Но по умолчанию product_id является первичным ключом и уже индексирован. Поэтому в данном случае у вас получится 2 одинаковых индекса.2. Авто инкремент такой начинается с единицы, но когда вы переносите Бд, то автоинкримент начинается с последнего id в базе.Что тормозит я уже описал, отключите эту функцию и почувствуйте разницу.
О, за такой ответ спасибо.Кстати, модуль PopupCategory (который визуально повторяет удобную структуру категорий на амазоне) якобы использует кеширование, но у меня что с ним, что без него — даже на локалхосте после загрузки страницы с большим количеством категорий (которые как то по своему обрабатываются в этом модуле) браузер думает секунд 10. А со стандартным модулем категорий, который выводит их в не очень удобном виде (при большом кол-ве категорий) страница загружается сразу.
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.