Перейти к содержанию

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

Доброго дня. Версия опенкарт 1.5.6.1. Шаблон купленный готовый. Изменения на сайте www.smart-tuning.com.ua не проводились никакие только вносился товар.Хостинг у хостера www.ukraine.com.ua

Появилась ошибка 2018-04-08 20:33:33 - PHP Warning:  mysql_query(): MySQL server has gone away in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 20:33:33 - PHP Warning:  mysql_query(): Error reading result set's header in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 20:33:33 - PHP Notice:  Error: MySQL server has gone away<br />Error No: 2006<br />
            SELECT
                `a`.`attribute_id`,
                REPLACE(REPLACE(TRIM(pa.text), '
', ''), '
', '') AS `txt`,
                `ad`.`name`,
                `agd`.`name` AS `gname`,
                `agd`.`attribute_group_id`
            FROM
                `oc_product` AS `p`
            INNER JOIN
                `oc_product_to_store` AS `pts`
            ON
                `p`.`product_id` = `pts`.`product_id` AND `pts`.`store_id` = 0
            INNER JOIN
                `oc_product_attribute` AS `pa`
            ON
                `p`.`product_id` = `pa`.`product_id` AND `pa`.`language_id` = 4
            INNER JOIN
                `oc_attribute` AS `a`
            ON
                `a`.`attribute_id` = `pa`.`attribute_id`
            INNER JOIN
                `oc_attribute_description` AS `ad`
            ON
                `ad`.`attribute_id` = `a`.`attribute_id` AND `ad`.`language_id` = 4
            INNER JOIN
                `oc_attribute_group` AS `ag`
            ON
                `ag`.`attribute_group_id` = `a`.`attribute_group_id`
            INNER JOIN
                `oc_attribute_group_description` AS `agd`
            ON
                `agd`.`attribute_group_id` = `ag`.`attribute_group_id` AND `agd`.`language_id` = 4
            
            WHERE
                `p`.`date_available` <= NOW() AND `p`.`status` = '1'
            GROUP BY
                `txt`, `pa`.`attribute_id`
            HAVING 
                `txt` != ''
            ORDER BY
                `txt`

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

 

Изменено пользователем ivanickii

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


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, ivanickii сказал:

Доброго дня. Версия опенкарт 1.5.6.1. Шаблон купленный готовый. Изменения на сайте www.smart-tuning.com.ua не проводились никакие только вносился товар.Хостинг у хостера www.ukraine.com.ua

Появилась ошибка 2018-04-08 20:33:33 - PHP Warning:  mysql_query(): MySQL server has gone away in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 20:33:33 - PHP Warning:  mysql_query(): Error reading result set's header in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 20:33:33 - PHP Notice:  Error: MySQL server has gone away<br />Error No: 2006<br />
            SELECT
                `a`.`attribute_id`,
                REPLACE(REPLACE(TRIM(pa.text), '
', ''), '
', '') AS `txt`,
                `ad`.`name`,
                `agd`.`name` AS `gname`,
                `agd`.`attribute_group_id`
            FROM
                `oc_product` AS `p`
            INNER JOIN
                `oc_product_to_store` AS `pts`
            ON
                `p`.`product_id` = `pts`.`product_id` AND `pts`.`store_id` = 0
            INNER JOIN
                `oc_product_attribute` AS `pa`
            ON
                `p`.`product_id` = `pa`.`product_id` AND `pa`.`language_id` = 4
            INNER JOIN
                `oc_attribute` AS `a`
            ON
                `a`.`attribute_id` = `pa`.`attribute_id`
            INNER JOIN
                `oc_attribute_description` AS `ad`
            ON
                `ad`.`attribute_id` = `a`.`attribute_id` AND `ad`.`language_id` = 4
            INNER JOIN
                `oc_attribute_group` AS `ag`
            ON
                `ag`.`attribute_group_id` = `a`.`attribute_group_id`
            INNER JOIN
                `oc_attribute_group_description` AS `agd`
            ON
                `agd`.`attribute_group_id` = `ag`.`attribute_group_id` AND `agd`.`language_id` = 4
            
            WHERE
                `p`.`date_available` <= NOW() AND `p`.`status` = '1'
            GROUP BY
                `txt`, `pa`.`attribute_id`
            HAVING 
                `txt` != ''
            ORDER BY
                `txt`

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

 


Судя по всему у вас очень много атрибутов и слабый хостинг а также очень много товаров в одной категории.

Так или иначе данная проблема решается.

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, snastik сказал:

Судя по всему у вас очень много атрибутов

Может быть, а также может быть много и товаров

Кроме того - этот запрос не оптимальный, хотя бы потому что есть having

И. напоследок
Запрос по имени группы и имени атрибута вінесть в отдельную ветку.
Сократив запрос до 3 JOIN


 

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


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, chukcha сказал:

Может быть, а также может быть много и товаров

Кроме того - этот запрос не оптимальный, хотя бы потому что есть having

И. напоследок
Запрос по имени группы и имени атрибута вінесть в отдельную ветку.
Сократив запрос до 3 JOIN


 

 

Это megaFilterPro - там достаточно странный кусок кода, который отвечает за выборку атрибутов.
В конечном счете все равно там упирается в поле text. И даже если обойти проблемы с индексацией. Все равно в какой то момент приходится упираться в общее количество проходов по таблице pa. Грубо говоря независимо от конфигурации сервера, если общий набор значений параметров у товаров в категории овер 100к  - это будет медленно. Но исходя из того что server gone away  - это либо шаред с зарезанными таймаутами. Либо очень слабый VPS опять же с зарезанными параметрами.

 

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


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, snastik сказал:

там достаточно странный кусок кода, который отвечает за выборку атрибутов.

Действительно странный, т.е. ощущение такое, что сделан на самом первом этапе создания фильтра, и оставлен на "авось" когда-нибудь оптимизирую

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


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, chukcha сказал:

Действительно странный, т.е. ощущение такое, что сделан на самом первом этапе создания фильтра, и оставлен на "авось" когда-нибудь оптимизирую

 

В таком формате он там сравнительно недавно.
По хорошему.
Так как в Mega фильтре коллекция значения атрибутов кешируется и кешируется грамотно с возможностью выставить произвольное время хранения а не час по дефолту, для среднестатистического проекта, в котором до 500 товаров на категорию, особой оптимизации этого запроса не нужно. Да и опять же, как его оптимизировать то? Если у нас там тип поля text. Также эта конструкция совершенно по иному воспринимается, если вспомнить, что в фильтре есть возможность сегментации значений при помощи разделителя, например: цвет: красный, зеленый - могут быть уникальными значениями красный (3), зеленый (5). В таком формате в принципе про любые индексы можно забыть. Как альтернатива авторы Mega фильтра предлагают версию PLUS, которая создает уникальный индекс в дополнительные поля в таблицу product. Но у меня ни разу не получилось увидеть выгоды от использования PLUS, так как просто кастомная оптимизация вышеприведенного запроса дает лучшие результаты. 
Формировать отдельный индексируемый справочник с crc32('text') значениями, авторы фильтра я так понимаю считают излишней роскошью.
Поэтому на больших проектах способы борьбы достаточно простые - вырезать все лишнее, немного перестроить порядок полей в запросе, немного составных индексов ну и правильно сконфигурированный mysql сервер - до 10к товаров, практически панацея. А вот на примере 75-100 к товаров на категорию с десятком значений атрибутов, это уже не вариант, но здесь на помощь приходит sphinx и json поля.
 

 

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


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

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

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

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

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

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

Войти

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

Войти

  • Последние посетители   0 пользователей онлайн

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.