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

RGB    1 036

Такую красоту, если она еще и работает как надо, грех не выложить в дополнения

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


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

А красным выделяются медленные запросы? Какая логика в них - все, что дольше 0.01 с?

У меня получились совсем другие цифры и по запросам, и по времени, по сравнению с этим решением

Хотя и от тех, и от тех цифр, волосы на голове начинают шевелится) Когда видишь, сколько запросов нужно для вывода всех акционных товаров например

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

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


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

Такую красоту, если она еще и работает как надо, грех не выложить в дополнения

Тут можно пощупать http://od-shop.andriididenko.com/, хотелось бы услышать отзывы пользователей..., потом и в дополнения можно оформить:)

Есть ещё идея - подсвечивать медленные запросы к БД.

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


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

Тут можно пощупать http://od-shop.andriididenko.com/, хотелось бы услышать отзывы пользователей..., потом и в дополнения можно оформить :)

Есть ещё идея - подсвечивать медленные запросы к БД.

Да у вас там сайт пустой с одним товаром, что там щупать) Вот добавьте 10К товаров, тогда будет нагляднее.

А медленные запросы разве уже не выделяются красным? Смотрите сами:

KkOA+.png

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


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

На счет медленных запросов, верно в коде класса жестко прописано условие $prof['Duration'] > 0.009, можно поменять на своё усмотрение. Написал что идея, т.к. думал в выкладываемой версии это не реализовано:)

http://od-shop.andriididenko.com/ это полигон, щупать только как выглядит профайлер)) На счет большого кол-ва запросов я уже осведомлён, я тестировал движок перед выбором магазина, многое лечиться несколькими строчками кода, закончу проект, поделюсь рецептами...

А что у вас показывает это решение? У них логика расчета времени выполения скрипта и используемой памяти одинаковые, лог запросов к БД разный.

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


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

твою то мать.....

при включенных рекомендуемых и новое..... 1812 запросов к базе.... пизнец....

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


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

Огромное спасибо! А я по старинке xDebug + NetBeans. Данный дебаггер используется в фреймворке Kohana. На выходных по любому поиграюсь с 10+ тыс товарами.

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


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

твою то мать.....

при включенных рекомендуемых и новое..... 1812 запросов к базе.... пизнец....

Я думал мои 95 это много)

На счет медленных запросов, верно в коде класса жестко прописано условие $prof['Duration'] > 0.009, можно поменять на своё усмотрение. Написал что идея, т.к. думал в выкладываемой версии это не реализовано :)

http://od-shop.andriididenko.com/ это полигон, щупать только как выглядит профайлер)) На счет большого кол-ва запросов я уже осведомлён, я тестировал движок перед выбором магазина, многое лечиться несколькими строчками кода, закончу проект, поделюсь рецептами...

А что у вас показывает это решение? У них логика расчета времени выполения скрипта и используемой памяти одинаковые, лог запросов к БД разный.

Получилось с ним вот так (но с большим разбросом во времени выполнения, поэтому мне в этом плане ваше решение больше нравится - время меняется не сильно):

без кеша

Memory Usage: 8.050377 MB

Execution Time: 0.249878 seconds

109 sql queries executed:

с кешем

Memory Usage: 8.006096 MB

Execution Time: 0.3022 seconds

68 sql queries executed:

С вашим:

без кеша

7.22501 s

7.95 mb

logs (2)

sql (114)

files (95)

request (95)

с кешем

3.48739 s

7.95 mb

logs (2)

sql (73)

files (95)

request (95)

P.S. Забыл написать - результаты на здоровенной категории в 4К товаров, но с выводом 12 на страницу, никаких доп модулей не включено, только вывод категорий в шапке без подсчета (категорий 2 десятка) и вывод категорий сбоку тоже без подсчета

P.P.S. Заметное увеличение времени в вашем дебаггере мне кажется более точным, потому что даже зрительно - ну никак не может быть, чтобы категория у меня загружалась за 0.2 сек

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

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


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

Огромное спасибо! А я по старинке xDebug + NetBeans. Данный дебаггер используется в фреймворке Kohana. На выходных по любому поиграюсь с 10+ тыс товарами.

я с этим отладчиком знаком из проекта joostina, теперь буду знать откуда ноги растут http://alertdevelop.ru/projects/profilertoolbar, а отладку кода с XDebug в IDE NetBeans тоже активно использую

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


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

Не могу найти - нет числовых значений или ограничения на длину запросов к базе. Подскажите, где (или как) они обрезается (около 300 символов)?

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


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

Получилось с ним вот так (но с большим разбросом во времени выполнения, поэтому мне в этом плане ваше решение больше нравится - время меняется не сильно):

без кеша

Memory Usage: 8.050377 MB

Execution Time: 0.249878 seconds

109 sql queries executed:

...

P.S. Забыл написать - результаты на здоровенной категории в 4К товаров, но с выводом 12 на страницу, никаких доп модулей не включено, только вывод категорий в шапке без подсчета (категорий 2 десятка) и вывод категорий сбоку тоже без подсчета

P.P.S. Заметное увеличение времени в вашем дебаггере мне кажется более точным, потому что даже зрительно - ну никак не может быть, чтобы категория у меня загружалась за 0.2 сек

у это решения есть баг, по расчету времени выполения скрипта, для определения времени используется microtime() - функция возвращает строку в формате "msec sec" (пример: '0.11231300 1363106664'), что делает в дальнейшем не верными расчеты, надо заменить на microtime(true) будем получать число типа float и расчет будет верный.

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


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

Не могу найти - нет числовых значений или ограничения на длину запросов к базе. Подскажите, где (или как) они обрезается (около 300 символов)?

для профилирования запросов к БД используется встроенный MySQL Profiler, ничего не должно обрезаться, как выглядит обрезанный запрос?

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


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

для профилирования запросов к БД используется встроенный MySQL Profiler, ничего не должно обрезаться, как выглядит обрезанный запрос?

Например так:

SELECT DISTINCT m.`manufacturer_id`, m.`name` FROM `manufacturer` m LEFT JOIN product p ON(p.manufacturer_id=m.`manufacturer_id`) LEFT JOIN product_to_category p2c ON(p.product_id=p2c.product_id) LEFT JOIN product_to_store p2s ON(p.product_id=p2s.product_id) WHERE p.status = '1' AND p.date_availa 

или вот еще

SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '8' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-03-12 23:59:59') AND (pd2.date_end = ' 

явно же запросы не полные

или посмотрите мое сообщение выше со скриншотом медленных запросов - там тоже обрезано на полуслове местами

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


Ссылка на сообщение
Поделиться на другие сайты
kikasso    125
Например так:
SELECT DISTINCT m.`manufacturer_id`, m.`name` FROM `manufacturer` m LEFT JOIN product p ON(p.manufacturer_id=m.`manufacturer_id`) LEFT JOIN product_to_category p2c ON(p.product_id=p2c.product_id) LEFT JOIN product_to_store p2s ON(p.product_id=p2s.product_id) WHERE p.status = '1' AND p.date_availa 

или вот еще

SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '8' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2013-03-12 23:59:59') AND (pd2.date_end = ' 

явно же запросы не полные или посмотрите мое сообщение выше со скриншотом медленных запросов - там тоже обрезано на полуслове местами

оказывается мускул обрезает всё больше 300 символов, тут подробнее. Раньше не сталкивался с такими "могучими" запросами :), сам когда код пишу 10 запросов на страницу считаю уже много, всегда продумываю структуру БД, а если еще немножко денормализацией погрешить...

OpenCart хорош для небольших проектов, чтобы нормально работал с большим количеством товаров, придется изрядно допиливать...

Выкладываю новую версию отладчика, с переделанным способом вывода лога запросов к БД, добавлена плюшка в виде подсветки синтаксиса MySQL.

sql_debug_0.0.2.png

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


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

А как новую версию то поставить? У меня нет строчки $row = array() в \system\database\mysql.php, соответственно пункт 3 установки выполнить не получается.

Добавляю после $data = array(); и вроде что-то работает, но выпадают ошибки на неизвестную переменную sysstart, хотя сами запросы выводятся (но окно с их выводом после разворачивания намертво вешает браузер, а прокрутка лога требует пару минут

Версия ОС 1.5.2.1, но такой строки нет и в 1.5.5.1, и в 1.5.1.3 - специально проверил

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


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

А как новую версию то поставить? У меня нет строчки $row = array() в \system\database\mysql.php, соответственно пункт 3 установки выполнить не получается.

Добавляю после $data = array(); и вроде что-то работает, но выпадают ошибки на неизвестную переменную sysstart, хотя сами запросы выводятся (но окно с их выводом после разворачивания намертво вешает браузер, а прокрутка лога требует пару минут

Версия ОС 1.5.2.1, но такой строки нет и в 1.5.5.1, и в 1.5.1.3 - специально проверил

извиняюсь допустил не точность в инструкции, надо в файленайти строчку \system\database\mysql.php;

$resource = mysql_query($sql, $this->link); 

и заменить на:

 $sysstart = microtime(true);
 $resource = mysql_query($sql, $this->link);
 $row = array();

 if(DEBUG){
  $caller = debug_backtrace();
  $row['file'] = $caller[1]['file'];
  $row['line'] = $caller[1]['line'];

  $row['Duration'] = round(( microtime(true) - $sysstart), 5);
  $row['Query'] = $sql;

  Debug::$_profs[] =  $row;
 }

архив debugger_0.0.2.zip перезалил...

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


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

Подсветку синтаксиса все равно не вижу :-) В остальном все работает.

У кого как у меня - ужасно тормозит вывод лога sql-запросов при их большом кол-ве - все дело в цсс, нужно зайти в файл profilertoolbar.css и найти строчку

 #ptb table td{padding:1px 5px; text-align: left; vertical-align: top; border: 1px dotted #424242;}

и закомментировать в ней (сам удивляюсь) границу в виде точек

 #ptb table td{padding:1px 5px; text-align: left; vertical-align: top; /*border: 1px dotted #424242;*/}

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


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

Подсветку синтаксиса все равно не вижу :-) В остальном все работает.

Возьми файл profilertoolbar.css из последнего архива debugger_0.0.2.zip

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


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

А у вас там как, ОС под рукой? Или вы по моим сообщениям отлаживаете модуль? :-) Попробуйте в админку зайти

Fatal error: Class 'Debug' not found in \system\database\mysql.php on line 35

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


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

А у вас там как, ОС под рукой? Или вы по моим сообщениям отлаживаете модуль? :-) Попробуйте в админку зайти

Fatal error: Class 'Debug' not found in \system\database\mysql.php on line 35

у меня все ОК)

измените в \admin\config.php:

//debug

define('DEBUG', false);

просто работа отладчика пока в админке не реализована.

кодом делюсь для разработчиков, а не первоклашек... по таким косячкам можно и не дергать:)

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


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

Годный!

Спасибо!!!

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


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

просто работа отладчика пока в админке не реализована.

кодом делюсь для разработчиков, а не первоклашек... по таким косячкам можно и не дергать :)

Ну я то догадался, как исправить это, но ведь здесь и первоклашек хватает, да и не все первоклашки понимают что это и как это. Поставят, увидят сломавшуюся админку, подумают "Ах этот ужасный кривой оксторе, пойду лучше заминусую автора дополнения и скачаю красивую сборочку максисторе со всякими свистелками и перделками, там все ведь работает" :-)

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


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

Ну я то догадался, как исправить это, но ведь здесь и первоклашек хватает, да и не все первоклашки понимают что это и как это. Поставят, увидят сломавшуюся админку, подумают "Ах этот ужасный кривой оксторе, пойду лучше заминусую автора дополнения и скачаю красивую сборочку максисторе со всякими свистелками и перделками, там все ведь работает" :-)

Согласен, просто сейчас код пишется на коленке под нужды, думаю еще добавить профилирование Ajax запросов через FireBug и информацию по использованию кэша. Спасибо за помощь в отладке!

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


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

Автор - молодец ! Выражаю большую благодарность !
Пожалуйста допилите версию с работающим отладчиком в админке OC :wink: очень нужно !

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От barl0g
      Просьба к более опытным программистам описать каким образом правильно организовать отладку ошибок, возникающих при конфликте модулей в opencart?
       
      Например, программист натыкается на ошибку типа:
      Parse error: syntax error, unexpected 'else' (T_ELSE) in /home/user/www/opencart/system/storage/modification/catalog/view/theme/default/template/product/product.tpl on line 198 В phpstorm breakpoint в файлах *.tpl не устанавливается (?). Каким образом правильно организовать отладку в таких случаях?
  • Последние посетители   0 пользователей онлайн

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