Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Отладчик для OpenCart - Debugger


 Поделиться

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

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

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

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

Изменено пользователем RGB
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

KkOA+.png

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

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

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

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

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

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

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

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

при включенных рекомендуемых и новое..... 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
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

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

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

без кеша

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 и расчет будет верный.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

для профилирования запросов к БД используется встроенный 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 = ' 

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

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

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

Например так:
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

  • +1 5
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

А как новую версию то поставить? У меня нет строчки $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 перезалил...

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

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

У кого как у меня - ужасно тормозит вывод лога 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;*/}

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

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

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

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

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

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

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

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

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

у меня все ОК)

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

//debug

define('DEBUG', false);

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

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

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

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

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

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

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

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

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

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