Jump to content

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by RGB

Share this post


Link to post
Share on other sites

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

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

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

  • +1 2

Share this post


Link to post
Share on other sites

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

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

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

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

KkOA+.png

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

при включенных рекомендуемых и новое..... 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 сек

Edited by RGB
  • +1 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

без кеша

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
Например так:
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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

у меня все ОК)

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

//debug

define('DEBUG', false);

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

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

  • +1 1

Share this post


Link to post
Share on other sites
Guest brk

Годный!

Спасибо!!!

Share this post


Link to post
Share on other sites

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites

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

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

  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By 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 не устанавливается (?). Каким образом правильно организовать отладку в таких случаях?
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.