Akkyla Опубліковано: 14 грудня 2013 Share Опубліковано: 14 грудня 2013 Делаю для себя магазин. До окончания еще далеко)). Хостер Таймвеб. Прислал предупреждение - очень высокая нагрузка,превышает в 10 раз дозволенную. Не могу понять, как такой небольшой магазин,да еще и без посетителей дает такую большую нагрузку. .Было три магазинчика с разной тематикой,решила объединить в один. Вот тут и началось)) В магазине 8 категорий и около 3000 товара. Шаблон не самый тяжелый. Специально перешла с Журнала на Полианну. Хостер категорически настаивает на переходе на VDS. Купила, но справится не могу. Понимаю,что на сервере нужно внести изменения в конфиг,прописать новые пути. Но этих путей я не знаю. А файл info.php не работает Понимаю,что нужно оптимизировать. Индексы вроде бы прописала. Не помогает. Что вы посоветуете в данной ситуации? Как оптимизировать? Таймвеб не оказывает поддержки на VDS - переходить к хостинг-провайдеру с администрированием? Хотя я и не понимаю,зачем в моем случае VDS. Пациент- xochuuu.ru Надіслати Поділитися на інших сайтах More sharing options...
Maryl Опубліковано: 14 грудня 2013 Share Опубліковано: 14 грудня 2013 как такой небольшой магазин,да еще и без посетителей дает такую большую нагрузку. Как вариант - проверить ботов. Потому что если посетителей почти нет, то на пустом месте нагрузка создаваться вряд ли станет. Побанить лишних, основную часть хламовых можно перекрыть через htaccess. Был не так давно случай в работе, когда на одном сайте нагрузку создавали именно левые боты, упорно ходя по фильтру товаров. Делалось это со скоростью нескольких запросов в секунду. Таким образом сайт тоже с таймвеба получал предупреждения неоднократно. Ботов лишних повыгоняли, прикрыли фильтр для не особо важных, в результате нагрузка упала до показателей в единицы. Никакого переезда не понадобилось. Пример до/после оптимизации 1 Надіслати Поділитися на інших сайтах More sharing options...
deim Опубліковано: 19 грудня 2013 Share Опубліковано: 19 грудня 2013 Напишите в лс, скорее всего могу помочь с нагрузкой, касающейся не ботов в среднем нагрузка на бд снижается в 3-4 раза Надіслати Поділитися на інших сайтах More sharing options... Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 Сделала что смогла. Перешла с опенкарта на окстори. Из за того что в нем встроенный сео. Подключила мемкаше. Отключила большинство модулей. Заменила слайдер баннерами. Товару спарсила только половину от нужного количества, т.е сейчас товара около 1000, против 3000 ,что было. Нагрузка резко упала до нормы. НО,она опять приближается к пограничной. Ну это же ненормально,что в магазине не будет нужных модулей и товара полторы штуки(((. Дата Сервер Нагрузка на CPU процессами Нагрузка на MySQL 20 декабря certus 17.31 cp 861 19 декабря certus 12.94 cp 826 18 декабря certus 20.35 cp 319 17 декабря certus 9.65 cp 268 16 декабря certus 8.58 cp 193 15 декабря certus 31.94 cp 194 14 декабря certus 13.59 cp 2161 13 декабря certus 3.13 cp 1614 12 декабря certus 28.03 cp 3847 11 декабря certus 27.54 cp 2950 10 декабря certus 10.12 cp 1026 9 декабря certus 26.51 cp 10856 8 декабря certus 7.87 cp 720 7 декабря certus 26.61 cp 888 6 декабря certus 34.95 cp 1045 5 декабря certus 14.49 cp 216 4 декабря certus 8.43 cp 276 3 декабря certus 8.18 cp 234 2 декабря certus 10.81 cp 199 1 декабря certus 8.49 cp 187 30 ноября certus 8.92 cp 167 29 ноября certus 21.39 cp 196 28 ноября certus 7.4 cp 250 27 ноября certus 13.47 cp 580 26 ноября certus 13.93 cp 411 25 ноября certus 30.05 cp 243 24 ноября certus 14.88 cp 343 23 ноября certus 32.04 cp 361 22 ноября certus 4 cp 27 Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Попробуйте вот это: https://opencartforum.com/topic/19017-otladchik-dlia-opencart-debugger/ Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Сделала что смогла. Перешла с опенкарта на окстори. Из за того что в нем встроенный сео. Подключила мемкаше. Отключила большинство модулей. Заменила слайдер баннерами. Товару спарсила только половину от нужного количества, т.е сейчас товара около 1000, против 3000 ,что было. Нагрузка резко упала до нормы. НО,она опять приближается к пограничной. Ну это же ненормально,что в магазине не будет нужных модулей и товара полторы штуки(((.Дата Сервер Нагрузка на CPU процессами Нагрузка на MySQL 20 декабря certus 17.31 cp 861 19 декабря certus 12.94 cp 826 18 декабря certus 20.35 cp 319 17 декабря certus 9.65 cp 268 16 декабря certus 8.58 cp 193 15 декабря certus 31.94 cp 194 14 декабря certus 13.59 cp 2161 13 декабря certus 3.13 cp 1614 12 декабря certus 28.03 cp 3847 11 декабря certus 27.54 cp 2950 10 декабря certus 10.12 cp 1026 9 декабря certus 26.51 cp 10856 8 декабря certus 7.87 cp 720 7 декабря certus 26.61 cp 888 6 декабря certus 34.95 cp 1045 5 декабря certus 14.49 cp 216 4 декабря certus 8.43 cp 276 3 декабря certus 8.18 cp 234 2 декабря certus 10.81 cp 199 1 декабря certus 8.49 cp 187 30 ноября certus 8.92 cp 167 29 ноября certus 21.39 cp 196 28 ноября certus 7.4 cp 250 27 ноября certus 13.47 cp 580 26 ноября certus 13.93 cp 411 25 ноября certus 30.05 cp 243 24 ноября certus 14.88 cp 343 23 ноября certus 32.04 cp 361 22 ноября certus 4 cp 27 Какой у Вас тарифный план? (CPU, MySQL). Надіслати Поділитися на інших сайтах More sharing options... Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 CPU - 50, MySQL - 1000. Это для всех тарифов,кроме премиум,предназначенных для Бетрикс Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Этого тарифа вам не хватит, нужно переходить на другой более мощный. Надіслати Поділитися на інших сайтах More sharing options... Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 Исходя из данных по нагрузке, переход на другой тарифный план виртуального хостинга невозможен. В данном случае вам подойдут технические решения без ограничений по нагрузке - VDS или выделенный сервер. Это ответ хостинга по поводу смены тарифа. А VDS,- это нужен системный администратор. А зачем мне он,если магазин еще делается.нет посетителей. И когда он заработает еще не известно,а платить нужно сейчас,в 9 раз больше, не считая оплаты системному администратору((( Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Это ответ хостинга по поводу смены тарифа. А VDS,- это нужен системный администратор. А зачем мне он,если магазин еще делается.нет посетителей. И когда он заработает еще не известно,а платить нужно сейчас,в 9 раз больше, не считая оплаты системному администратору((( Меняйте Таймвеб, если у них нет оптимального плана для вас!!! Мне не понятно кто для кого работает? почитайте о них в сети и все пойме. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. 1 Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. То есть в этот тарифный план CPU - 50, MySQL - 1000. Вы приведете в чувство сайт под нужды Akkyla всего лишь облегчив тяжелые запросы и все будет работать? Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Именно. Это обычное дело, что чистый окстор вываливается за 1000. После правок начинает кушать от 100 до 250. Так что, коллега, вы зря минусуете. Попробуйте поставить дэбаггер, который я советовал выше, и сами сможете во всём убедиться. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 К счастью мне повезло у меня нормальный провайдер мне это без необходимости, определение медленных запросов это штатный инструмент хостера. Поэтому я рад что мне не приходится слушать всякие истории о чудесном превращении. У всех есть свое мнение deim и если оно почему то не схоже с вашим это не значит что оно не верное. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 тормозит в основном подсчет товаров в категориях в файлах header, category и модуле category несколько раз тормозили сторонние модули, решалось их отключением поставьте https://opencartforum.com/files/file/786-db-log/ походите по медленным страницам и вышлите лог Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 Сделала что смогла. Перешла с опенкарта на окстори. Из за того что в нем встроенный сео. Подключила мемкаше. Отключила большинство модулей. Заменила слайдер баннерами. Товару спарсила только половину от нужного количества, т.е сейчас товара около 1000, против 3000 ,что было. Нагрузка резко упала до нормы. НО,она опять приближается к пограничной. Ну это же ненормально,что в магазине не будет нужных модулей и товара полторы штуки(((. Дата Сервер Нагрузка на CPU процессами Нагрузка на MySQL 20 декабря certus 17.31 cp 861 19 декабря certus 12.94 cp 826 18 декабря certus 20.35 cp 319 17 декабря certus 9.65 cp 268 16 декабря certus 8.58 cp 193 15 декабря certus 31.94 cp 194 14 декабря certus 13.59 cp 2161 13 декабря certus 3.13 cp 1614 12 декабря certus 28.03 cp 3847 11 декабря certus 27.54 cp 2950 10 декабря certus 10.12 cp 1026 9 декабря certus 26.51 cp 10856 8 декабря certus 7.87 cp 720 7 декабря certus 26.61 cp 888 6 декабря certus 34.95 cp 1045 5 декабря certus 14.49 cp 216 4 декабря certus 8.43 cp 276 3 декабря certus 8.18 cp 234 2 декабря certus 10.81 cp 199 1 декабря certus 8.49 cp 187 30 ноября certus 8.92 cp 167 29 ноября certus 21.39 cp 196 28 ноября certus 7.4 cp 250 27 ноября certus 13.47 cp 580 26 ноября certus 13.93 cp 411 25 ноября certus 30.05 cp 243 24 ноября certus 14.88 cp 343 23 ноября certus 32.04 cp 361 22 ноября certus 4 cp 27 Надіслати Поділитися на інших сайтах More sharing options...
deim Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Попробуйте вот это: https://opencartforum.com/topic/19017-otladchik-dlia-opencart-debugger/ Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Сделала что смогла. Перешла с опенкарта на окстори. Из за того что в нем встроенный сео. Подключила мемкаше. Отключила большинство модулей. Заменила слайдер баннерами. Товару спарсила только половину от нужного количества, т.е сейчас товара около 1000, против 3000 ,что было. Нагрузка резко упала до нормы. НО,она опять приближается к пограничной. Ну это же ненормально,что в магазине не будет нужных модулей и товара полторы штуки(((.Дата Сервер Нагрузка на CPU процессами Нагрузка на MySQL 20 декабря certus 17.31 cp 861 19 декабря certus 12.94 cp 826 18 декабря certus 20.35 cp 319 17 декабря certus 9.65 cp 268 16 декабря certus 8.58 cp 193 15 декабря certus 31.94 cp 194 14 декабря certus 13.59 cp 2161 13 декабря certus 3.13 cp 1614 12 декабря certus 28.03 cp 3847 11 декабря certus 27.54 cp 2950 10 декабря certus 10.12 cp 1026 9 декабря certus 26.51 cp 10856 8 декабря certus 7.87 cp 720 7 декабря certus 26.61 cp 888 6 декабря certus 34.95 cp 1045 5 декабря certus 14.49 cp 216 4 декабря certus 8.43 cp 276 3 декабря certus 8.18 cp 234 2 декабря certus 10.81 cp 199 1 декабря certus 8.49 cp 187 30 ноября certus 8.92 cp 167 29 ноября certus 21.39 cp 196 28 ноября certus 7.4 cp 250 27 ноября certus 13.47 cp 580 26 ноября certus 13.93 cp 411 25 ноября certus 30.05 cp 243 24 ноября certus 14.88 cp 343 23 ноября certus 32.04 cp 361 22 ноября certus 4 cp 27 Какой у Вас тарифный план? (CPU, MySQL). Надіслати Поділитися на інших сайтах More sharing options... Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 CPU - 50, MySQL - 1000. Это для всех тарифов,кроме премиум,предназначенных для Бетрикс Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Этого тарифа вам не хватит, нужно переходить на другой более мощный. Надіслати Поділитися на інших сайтах More sharing options... Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 Исходя из данных по нагрузке, переход на другой тарифный план виртуального хостинга невозможен. В данном случае вам подойдут технические решения без ограничений по нагрузке - VDS или выделенный сервер. Это ответ хостинга по поводу смены тарифа. А VDS,- это нужен системный администратор. А зачем мне он,если магазин еще делается.нет посетителей. И когда он заработает еще не известно,а платить нужно сейчас,в 9 раз больше, не считая оплаты системному администратору((( Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Это ответ хостинга по поводу смены тарифа. А VDS,- это нужен системный администратор. А зачем мне он,если магазин еще делается.нет посетителей. И когда он заработает еще не известно,а платить нужно сейчас,в 9 раз больше, не считая оплаты системному администратору((( Меняйте Таймвеб, если у них нет оптимального плана для вас!!! Мне не понятно кто для кого работает? почитайте о них в сети и все пойме. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. 1 Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. То есть в этот тарифный план CPU - 50, MySQL - 1000. Вы приведете в чувство сайт под нужды Akkyla всего лишь облегчив тяжелые запросы и все будет работать? Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Именно. Это обычное дело, что чистый окстор вываливается за 1000. После правок начинает кушать от 100 до 250. Так что, коллега, вы зря минусуете. Попробуйте поставить дэбаггер, который я советовал выше, и сами сможете во всём убедиться. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 К счастью мне повезло у меня нормальный провайдер мне это без необходимости, определение медленных запросов это штатный инструмент хостера. Поэтому я рад что мне не приходится слушать всякие истории о чудесном превращении. У всех есть свое мнение deim и если оно почему то не схоже с вашим это не значит что оно не верное. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 тормозит в основном подсчет товаров в категориях в файлах header, category и модуле category несколько раз тормозили сторонние модули, решалось их отключением поставьте https://opencartforum.com/files/file/786-db-log/ походите по медленным страницам и вышлите лог Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Сделала что смогла. Перешла с опенкарта на окстори. Из за того что в нем встроенный сео. Подключила мемкаше. Отключила большинство модулей. Заменила слайдер баннерами. Товару спарсила только половину от нужного количества, т.е сейчас товара около 1000, против 3000 ,что было. Нагрузка резко упала до нормы. НО,она опять приближается к пограничной. Ну это же ненормально,что в магазине не будет нужных модулей и товара полторы штуки(((.Дата Сервер Нагрузка на CPU процессами Нагрузка на MySQL 20 декабря certus 17.31 cp 861 19 декабря certus 12.94 cp 826 18 декабря certus 20.35 cp 319 17 декабря certus 9.65 cp 268 16 декабря certus 8.58 cp 193 15 декабря certus 31.94 cp 194 14 декабря certus 13.59 cp 2161 13 декабря certus 3.13 cp 1614 12 декабря certus 28.03 cp 3847 11 декабря certus 27.54 cp 2950 10 декабря certus 10.12 cp 1026 9 декабря certus 26.51 cp 10856 8 декабря certus 7.87 cp 720 7 декабря certus 26.61 cp 888 6 декабря certus 34.95 cp 1045 5 декабря certus 14.49 cp 216 4 декабря certus 8.43 cp 276 3 декабря certus 8.18 cp 234 2 декабря certus 10.81 cp 199 1 декабря certus 8.49 cp 187 30 ноября certus 8.92 cp 167 29 ноября certus 21.39 cp 196 28 ноября certus 7.4 cp 250 27 ноября certus 13.47 cp 580 26 ноября certus 13.93 cp 411 25 ноября certus 30.05 cp 243 24 ноября certus 14.88 cp 343 23 ноября certus 32.04 cp 361 22 ноября certus 4 cp 27 Какой у Вас тарифный план? (CPU, MySQL). Надіслати Поділитися на інших сайтах More sharing options...
Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 CPU - 50, MySQL - 1000. Это для всех тарифов,кроме премиум,предназначенных для Бетрикс Надіслати Поділитися на інших сайтах More sharing options...
puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Этого тарифа вам не хватит, нужно переходить на другой более мощный. Надіслати Поділитися на інших сайтах More sharing options...
Akkyla Опубліковано: 21 грудня 2013 Автор Share Опубліковано: 21 грудня 2013 Исходя из данных по нагрузке, переход на другой тарифный план виртуального хостинга невозможен. В данном случае вам подойдут технические решения без ограничений по нагрузке - VDS или выделенный сервер. Это ответ хостинга по поводу смены тарифа. А VDS,- это нужен системный администратор. А зачем мне он,если магазин еще делается.нет посетителей. И когда он заработает еще не известно,а платить нужно сейчас,в 9 раз больше, не считая оплаты системному администратору((( Надіслати Поділитися на інших сайтах More sharing options...
puno Опубліковано: 21 грудня 2013 Share Опубліковано: 21 грудня 2013 Это ответ хостинга по поводу смены тарифа. А VDS,- это нужен системный администратор. А зачем мне он,если магазин еще делается.нет посетителей. И когда он заработает еще не известно,а платить нужно сейчас,в 9 раз больше, не считая оплаты системному администратору((( Меняйте Таймвеб, если у них нет оптимального плана для вас!!! Мне не понятно кто для кого работает? почитайте о них в сети и все пойме. Надіслати Поділитися на інших сайтах More sharing options...
deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. 1 Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. То есть в этот тарифный план CPU - 50, MySQL - 1000. Вы приведете в чувство сайт под нужды Akkyla всего лишь облегчив тяжелые запросы и все будет работать? Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Именно. Это обычное дело, что чистый окстор вываливается за 1000. После правок начинает кушать от 100 до 250. Так что, коллега, вы зря минусуете. Попробуйте поставить дэбаггер, который я советовал выше, и сами сможете во всём убедиться. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 К счастью мне повезло у меня нормальный провайдер мне это без необходимости, определение медленных запросов это штатный инструмент хостера. Поэтому я рад что мне не приходится слушать всякие истории о чудесном превращении. У всех есть свое мнение deim и если оно почему то не схоже с вашим это не значит что оно не верное. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 тормозит в основном подсчет товаров в категориях в файлах header, category и модуле category несколько раз тормозили сторонние модули, решалось их отключением поставьте https://opencartforum.com/files/file/786-db-log/ походите по медленным страницам и вышлите лог Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Ёлки-палки. Здесь не в тарифном плане дело. Я уже несколько сайтов с таймвеба в чувства приводил. В опенкарте есть реально тяжёлые запросы. То есть в этот тарифный план CPU - 50, MySQL - 1000. Вы приведете в чувство сайт под нужды Akkyla всего лишь облегчив тяжелые запросы и все будет работать? Надіслати Поділитися на інших сайтах More sharing options...
deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 Именно. Это обычное дело, что чистый окстор вываливается за 1000. После правок начинает кушать от 100 до 250. Так что, коллега, вы зря минусуете. Попробуйте поставить дэбаггер, который я советовал выше, и сами сможете во всём убедиться. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 К счастью мне повезло у меня нормальный провайдер мне это без необходимости, определение медленных запросов это штатный инструмент хостера. Поэтому я рад что мне не приходится слушать всякие истории о чудесном превращении. У всех есть свое мнение deim и если оно почему то не схоже с вашим это не значит что оно не верное. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 тормозит в основном подсчет товаров в категориях в файлах header, category и модуле category несколько раз тормозили сторонние модули, решалось их отключением поставьте https://opencartforum.com/files/file/786-db-log/ походите по медленным страницам и вышлите лог Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 К счастью мне повезло у меня нормальный провайдер мне это без необходимости, определение медленных запросов это штатный инструмент хостера. Поэтому я рад что мне не приходится слушать всякие истории о чудесном превращении. У всех есть свое мнение deim и если оно почему то не схоже с вашим это не значит что оно не верное. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 тормозит в основном подсчет товаров в категориях в файлах header, category и модуле category несколько раз тормозили сторонние модули, решалось их отключением поставьте https://opencartforum.com/files/file/786-db-log/ походите по медленным страницам и вышлите лог Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
deim Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Надіслати Поділитися на інших сайтах More sharing options... puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
puno Опубліковано: 22 грудня 2013 Share Опубліковано: 22 грудня 2013 <irony>puno, как думаете, freelancer тоже о каких-то чудесах рассказывает или же проблема всё-таки реальная и нам известна?</irony> freelancer, я связывался с автором, она пока решила посмотреть как поведёт себя сайт на дорогом тарифе. Надеюсь, что puno слушать не станут и нагрузку всё-таки пофиксим. Я тоже буду надеяться что автор темы примет правильное решение. Надіслати Поділитися на інших сайтах More sharing options...
Luchik Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 2013-12-29 15:06:37 - 17.66302 | 705 | /search/?search=canon2013-12-29 15:06:40 - 1.44643 UPDATE oc_product SET product_id = 584202485, `quantity` = 1000, `status` = '' where `product_id` = 5842024852013-12-29 15:06:40 - 1.91792 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,5002013-12-29 15:06:52 - 1.96471 SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon')2013-12-29 15:06:54 - 1.89816 SELECT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-12-29 15:06:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2013-12-29 15:06:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2013-12-29 15:06:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2013-12-29 15:06:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2013-12-29 15:06:00' AND p2s.store_id = '0' AND ( pd.name LIKE '%canon%' OR pd.tag LIKE '%canon%' OR LCASE(p.model) = 'canon' OR LCASE(p.sku) = 'canon' OR LCASE(p.upc) = 'canon' OR LCASE(p.ean) = 'canon' OR LCASE(p.jan) = 'canon' OR LCASE(p.isbn) = 'canon' OR LCASE(p.mpn) = 'canon') GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,152013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 5842011492013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 1.91807 | 2 | /var/www/catalog/model/catalog/simonfilters.php(179)2013-12-29 15:06:55 - 1.96471 | 1 | /var/www/vqmod/vqcache/vq2-catalog_controller_product_search.php(230)2013-12-29 15:06:55 - 10.56870 | 515 | /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)2013-12-29 15:06:55 - ----------2013-12-29 15:06:55 - 16.39312 | 703 | /search/?search=canon2013-12-29 15:06:55 - 0.03900 | 155 | /search/2013-12-29 15:06:55 - 0.35640 | 176 | / Подскажите, куда копнуть? По файлам: /var/www/vqmod/vqcache/vq2-catalog_model_catalog_product.php(305)$product_data[$result['product_id']] = $this->getProduct($result['product_id']); -------------------------------/var/www/vqmod/vqcache/vq2-catalog_controller_product_category.php(229)$results = $this->model_catalog_product->getProducts($data); -------------------------- /var/www/catalog/model/catalog/simonfilters.php(179)$rows = $this->model_catalog_product->getProducts($data);Фильтр товаров. Отключить не могу, т.к. он нужен ) Очень нужен намек. Конфиг севера: VPS 4 ядра по 2Гц, 3Гб оперативной памяти (под mysql выделено до 1.5Гб, макс что я видел - около 800, под memcached выделено до 512Мб) ii memcached 1.4.5-1 A high-performance memory object caching systemii nginx 0.7.67-3+squeeze3 small, but very powerful and efficient web server and mail proxyii percona-server-server-5.5 5.5.35-rel33.0-611.squeeze Percona Server database server binariesii php5-cli 5.3.3-7+squeeze18 command-line interpreter for the php5 scripting languageii php5-memcache 3.0.4-4+squeeze1 memcache extension module for PHP5 Можно ли для поиска лимитировать количество найденных товаров, например 75 (5 страниц по 15 товаров)? Быстрее бы поиск происходил, я думаю. Надіслати Поділитися на інших сайтах More sharing options...
deim Опубліковано: 29 грудня 2013 Share Опубліковано: 29 грудня 2013 Лучик, копать в catalog/controller/product/category.php или в лс Надіслати Поділитися на інших сайтах More sharing options... deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
deim Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я тут внимание обратил... Не знаю даже что и сказать. Как вам это удалось? 2013-12-29 15:06:54 - 1.72662 UPDATE oc_product SET product_id = 584201149, `quantity` = 1000, `status` = '' where `product_id` = 584201149 Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Большая нагрузка. Помогите советом.
Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 Я сам не понял что это..может кто-то параллельно по сайту лазил (он сейчас запущен и работает). Я в это время тестировал поиск по сайту. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options... Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Luchik Опубліковано: 30 грудня 2013 Share Опубліковано: 30 грудня 2013 тогда вопрос есть ли в таблице ключ по product_id? такая ситуация могла возникнуть когда mysql был сильно занят чем-то другим Я не специалист. Объясните где и как смотреть. Вообще брался стандартный Ocstore 1.5.5.1.1 + куплен шаблон темплфорест + куплен MCJ - Автоматическое объединение и сжатие CSS, JS + куплен фильтр Simple + куплен парсер в фоне работает.. Парсер иногда проскакивает 2013-12-29 17:09:34 - 1.45723 | 449 | var/www/парсер .php (пример) 2013-12-29 17:09:34 - 4.51370 | 441 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - 23.55369 | 2497 | var/www/парсер.php(пример) 2013-12-29 17:09:34 - ---------- 2013-12-29 17:09:34 - 29.56378 | 3605 | var/www/парсер.php(пример) но аналогичная надпись проскочила через несколько минут, после запроса Canon в поиске. Надіслати Поділитися на інших сайтах More sharing options...
Luchik Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 Поставил другую программу для логов13.93969 s 9.51 mb logs (2) sql (705) files (94) request (94)по запросу "canon"жесть.Кстати, в мускуле сделал запрос на добавление индексов ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` ) ;ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` ) ;ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_order` ADD INDEX ( `customer_id` ) ;ALTER TABLE `oc_product` ADD UNIQUE INDEX ( `product_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;ALTER TABLE `oc_product` ADD INDEX ( `date_available` ) ;ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;ALTER TABLE `oc_user` ADD INDEX ( `username` ) ;ALTER TABLE `oc_user` ADD INDEX ( `password` ) ;ALTER TABLE `oc_user` ADD INDEX ( `email` ) ; Скорость загрузки главной и товара не изменилась, а загрузка категории с товарами стала в 3 раза быстрее примерно (6,6 сек против 1,3-2,7 сек).И у меня отдельный модуль меню. Я в админке в категориях отключил "Показывать в главном меню " (была включена одна категория). Убрался один запрос sql на всех страницах.Надо что-то с поиском делать..попробую файлы поиска заменить с других сборок.И что-бы еще больше ускорить, надо уменьшить колличество запросов.У меня включено ЧПУ SeoPro, как и у всех. Если его отключить, то в крошках и ссылках меняюся данные, но скорости не прибавляется. Хотя колличество запросов уменьшается.Нашел, что можно кэшировать SeoPro, но мне что-то он не добавил скорости загрузки или уменьшения колличества sql запросов. Делал по этому: В файле seo_url.php часть содержимого функции index() после строкиКод:$parts = explode('/', $this->request->get['_route_']);и доКод:if (isset($this->request->get['product_id'])) {$this->request->get['route'] = 'product/product';необходимо заменить на следующий код:Код:if (count($parts)) {$parts = array_map(array($this->db, 'escape'), $parts);$db_query = $this->db->query("SELECT SUBSTRING_INDEX(query,'=',1) AS name,CONVERT(SUBSTRING_INDEX(query,'=',-1),UNSIGNED INTEGER) AS valueFROM " . DB_PREFIX . "url_alias WHERE keyword IN('" . implode("','", $parts) . "') ORDER BYFIND_IN_SET(keyword, '" . implode(",", $parts) . "')");if ($db_query->num_rows) {foreach($db_query->rows as $row) {if($row['name'] == 'category_id') {if (!isset($this->request->get['path'])) {$this->request->get['path'] = $row['value'];} else {$this->request->get['path'] .= '_' . $row['value'];}} else $this->request->get[$row['name']] = $row['value'];}} else $this->request->get['route'] = 'error/not_found';}В том же файле, но уже для функции rewrite() после строкиКод:parse_str($url_data['query'], $data);и доКод:if ($url) {unset($data['route']);содержимое необходимо заменить на код ниже:Код:$queries = array();foreach ($data as $key => $value) {if (isset($data['route'])) {if (($data['route'] == 'product/product' && $key == 'product_id') ||(($data['route'] == 'product/manufacturer/info' ||$data['route'] == 'product/product') && $key == 'manufacturer_id') ||($data['route'] == 'information/information' && $key == 'information_id')) {$queries[] = $this->db->escape($key . '=' . (int)$value);} elseif ($key == 'path') {$categories = explode('_', $value);foreach ($categories as $category) {$queries[] = "category_id=" . (int)$category;}}}}if (count($queries)) {$cache = md5(http_build_query($queries));$rows = $this->cache->get('url.alias.' . (int)$this->config->get('config_store_id') . $cache);if (!$rows) {$db_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_aliasWHERE `query` IN('" . implode("', '", $queries) . "')");$rows = $db_query->rows;$this->cache->set('url.alias.' . (int)$this->config->get('config_store_id') . $cache, $rows );}foreach ($queries as $query) {foreach ($rows as $row) {if($row['query'] == $query) {$url .= '/' . $row['keyword'];$query = explode('=', $query);$key = array_shift($query);$key = ($key=='category_id') ? 'path' : $key;unset($data[$key]);break;}}}}Обратите внимание, что в эту функцию добавлено также кэширование запросов к базе данных, это уже комплексное решение, которое сводит влияние режима SEO URL на производительность сервера к существенному минимуму (вместо 30-100 запросов всего 5-10).При использовании кеширования не забудьте его сбрасывать после изменения/создания категории, продукта, статьи или производителя. Для этого в модели этих объектов наравне с удалением собственного кэша добавьте строчку кода Может я не правильно сделал. И посоветуете по-другому? Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 4 січня 2014 Share Опубліковано: 4 січня 2014 по спойлер спрячьте. надеюсь кроме вас это никто не будет использовать Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts