Огромное количество запросов к БД.

Тема в разделе "SOBI", создана пользователем Morelly, 01.02.2008.

  1. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Хостер начал ругаться на большую нагрузку. Также начали появляться ошибки 500. Я так понимаю, виноват именно SOBI, т.к. генерирует он от 80 до 450 запросов на старанице. Причем 80% запросов вида
    Код (PHP):
    1. SELECT  langKey, langValue, description + 0 AS ordering FROM jos_sobi2_language WHERE sobi2Section = 'field_opt' AND fieldid = 17 AND sobi2Lang = 'russian' ORDER BY ordering

    Это у всех так, или у меня что-то ни то? И как решить данную проблему?
    SOBI 2.8.3 скачанный с офф. сайта + куча самодельных модификаций.
    Joomla 1.0.12 RE с этого сайта.
     
  2.  
  3. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Огромное количество запросов к БД.

    отлючи их и посмотри в дебаг модусе, сколько запросов к базе останется. у меня с соби проблем нет.
     
  4. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: Огромное количество запросов к БД.

    Проблему вычислил. Она оказалась в файле form.class.php
    Удилил в нем вот такой кусок кода
    Код (PHP):
    1. $query = "SELECT langKey as fieldname FROM `#__sobi2_language` WHERE `fieldid` = '{$id}' AND sobi2Section != 'field_opt'";
    2.                     $database->setQuery( $query );
    3.                     $field = null;
    4.                     $database->loadObject($field);
    5.                     $this->fieldname = $field->fieldname;
    6.                     if ($database->getErrorNum()) {
    7.                         trigger_error("sobiField::sobiField(): DB reports: ".$database->stderr(), E_USER_WARNING);
    8.                     }

    При заходе в категорию запросов стало 127, было 203. Далее пытаюсь убрать все запросы в таблицу _sobi2_language, но там есть свои нюансы.
    Как это нет? form.class.php я почти не модифицировал, рзаве что подправил стили, но запросы точно не трогал. Т.е. файл оригинальный и проблема должна быть не только у меня.
    Также нашел на форумах SOBI упоминание о проблеме, но пока без решения.
     
  5. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Огромное количество запросов к БД.

    может стоит, вместо того, чтобы хакать, кэшем воспользоваться? есть как встроенный кэш компонента, так и другие компоненты, которые кэшем управляют...
     
  6. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: Огромное количество запросов к БД.

    Встроенный включен, кэш SOBI включен, также установлен JoomSEF, тоже с кэшем. Насчет "другие компоненты" не уверен что они помогут, т.к. при открытии каждой страницы запросы к БД разные. Причем совершенно бессмысленные, путем удаления удалось сократить их с ~ 200 до ~ 125, а всё работает как и работало.
     
  7. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Огромное количество запросов к БД.

    запости изменения
     
  8. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: Огромное количество запросов к БД.

    Заметил кое-что поинтересней.
    Код (PHP):
    1. SELECT  langKey, langValue, description + 0 AS ordering FROM joz_sobi2_language WHERE sobi2Section = 'field_opt' AND fieldid = 16 AND sobi2Lang = 'russian' ORDER BY ordering

    Повторяется 20 раз.
    Ещё есть 2 таких же повторяющихся запроса только с другим fieldid. Причем номер fieldid это поле selectlist.
    Раньше такой же повторяющийся запрос был и для каждого inputpox, после того как я удалил кусок кода, указанный выше, остались только selectlist.
    Ещё одна закономерность: на странице выводится 10 объявлений. Одинаковых запросов в 2 раза больше.
    Подозреваю что они где-то крутятся в цикле, вот никак не могу найти где именно.
    Причем если удалить в form.class.php запрос вызывающий "это", на странице остаются вместо 120 60 запросов, но также пропадают все данные с selectlist полей.
     
  9. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Огромное количество запросов к БД.

    то есть, получается, что на каждый вид поля (селектлист и т.д.) одного внесения в каталог генерится по два запроса? т.е. на показ одной записи в каталоге при 10 описательных полях генерится 20 запросов и так далее, по количеству внесений на одну страницу... так?

    нехорошо получается
     
  10. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: Огромное количество запросов к БД.

    Да. К примеру, на странице категории есть 10 объявлений, у каждого по 7 inputbox и 3 selectlist. Получается 10*10*2 = 200 запросов. Причем без кэша в 3-4 раза больше.

    Пока что мне удалось убрать inputbox, т.е. осталось 3*10*2 = 60 запросов. Это было не так сложно, т.к. в таблице _sobi2_language были просто названия полей. Они у меня и так есть в шаблоне, по этому я ничего не потерял. Данные же берутся как и прежде с sobi2_fields_data. С selectlist сложнее т.к. в sobi2_fields_data хранятся только метки (field_xx_1, field_xx_2...), а сами значения находятся в sobi2_language.
    Думаю ладно уже, пусть берутся эти метки, преобразовывать их буду с помощью php, т.к. всё равно значения не меняются. А не тут то было, даже это оказалось очень сложно. Код оказался ооочень сложным и запутанным (для меня) и 6 часов копания ни к чему не привели. Даже не знаю что теперь делать :'(
    Заказал у хостинга VPS, надеюсь хоть на время поможет, пока не решу проблему.

    *Ставил для теста 2.8.4 версию, там та же картина, количество запросов не уменьшилось.
     
    Последнее редактирование: 04.02.2008
  11. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Огромное количество запросов к БД.

    так ведь это значит, что в описании внесений не будет выведена инфа, которую вводили через inputbox - или как?
     
  12. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: Огромное количество запросов к БД.

    Нет. Я имел ввиду что убрал все запросы касательно inputbox и таблицы _sobi2_language. В этой таблице находятся только названия самих полей. Причем на странице добавления объявления они остались, как ни странно. А данные берутся совсем с другой таблицы, с ними проблем никогда небыло.
     
    chilly_bang нравится это.
  13. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Огромное количество запросов к БД.

    ты ещё в процессе или закончил? выложи, что и как сделал - полезное и важное дело.
     
  14. Offline

    Morelly Недавно здесь

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: Огромное количество запросов к БД.

    Ок, как сделаю выложу.
    Пока что после переноса на VPS вообще ничего не работает, везде ошибки 500. Точнее не везде, а снова на тех же самых страницах категорий SOBI.
     

Поделиться этой страницей

Загрузка...