Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

А красным выделяются медленные запросы? Какая логика в них - все, что дольше 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;*/}

Надіслати
Поділитися на інших сайтах

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

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 month later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.