Jump to content

Recommended Posts

db_log


db_log


элемент профилирования. даёт информацию об общем времени выполнения запросов, их количестве, медленных запросах.

параметры

private $long_query_time = 0.5; // мин время запроса, который считать медленным и записывать в логprivate $long_query_alltime = 1;// мин суммарное время запросов, по истечению которого в лог будет выведена подробная статистикаprivate $log_slow_queries = 'slow.log'; //файл логов

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

УСТАНОВКА

1. распаковать файл в директорию system/library

2. в файле system/startup.php заменить

require_once(DIR_SYSTEM . 'library/db.php');

на

require_once(DIR_SYSTEM . 'library/db_log.php');

сам лог искать на сервере system/logs/slow.log

пример лога

дата/время - суммарное время однотипных запросов - кол-во запросов - файл, строка

2013-12-26 10:48:51 - --------------------

2013-12-26 10:48:51 - ----------

2013-12-26 10:48:51 - 0.00163 | 27 | /orcart.ru/public_html/catalog/controller/module/category.php(55)

2013-12-26 10:48:51 - 0.00240 | 28 | /orcart.ru/public_html/system/library/tax.php(62)

2013-12-26 10:48:51 - 0.00703 | 12 | /orcart.ru/public_html/catalog/model/catalog/product.php(243)

2013-12-26 10:48:51 - ----------

2013-12-26 10:48:51 - 0.01983 | 150 | /desktops/

2013-12-26 11:01:34 - --------------------

2013-12-26 11:01:35 - 1.24632 SELECT BENCHMARK(10000000,ENCODE('hello','goodbye'))

2013-12-26 11:01:35 - ----------

2013-12-26 11:01:35 - 0.00032 | 3 | /orcart.ru/public_html/admin/index.php(144)

2013-12-26 11:01:35 - 0.00040 | 1 | /orcart.ru/public_html/admin/index.php(42)

2013-12-26 11:01:35 - 1.24632 | 1 | /orcart.ru/public_html/admin/controller/module/sqlexecutor.php(33)

2013-12-26 11:01:35 - ----------

2013-12-26 11:01:35 - 1.24748 | 10 | /admin/index.php?route=module/sqlexecutor&token=fa00000000000007b31b7487e


 

  • +1 4

Share this post


Link to post
Share on other sites

Slow.log обычно бывает втроен в Mysql. Больше интересует, как найти тот запрос, который может и не самый долгий, но такой частый, что съедает много времени. Как бы так вычислить Время одного запроса x кол-во запросов?

Share this post


Link to post
Share on other sites

Slow.log обычно бывает втроен в Mysql. Больше интересует, как найти тот запрос, который может и не самый долгий, но такой частый, что съедает много времени. Как бы так вычислить Время одного запроса x кол-во запросов?

доступ к slow log есть не на всех хостингах, потом там мин время 1 сек.

поставь мин время 0 - увидишь все запросы.

Share this post


Link to post
Share on other sites

доступ к slow log есть не на всех хостингах, потом там мин время 1 сек.

поставь мин время 0 - увидишь все запросы.

Согласен, в этом отношении модуль полезный. А что на счет второго вопроса?

Share this post


Link to post
Share on other sites

Запросы есть в логах и думаю их легко по файлу найти...

Отличная штука, а vqmod не тянет изменений в директории system?

Share this post


Link to post
Share on other sites

 $this->log->write(sprintf ("all_time: %05.5f; count_queries: %05d %s\n----------------------------------------------------------------------\n", $this->all_time, $this->count_queries, $_SERVER['REQUEST_URI'] ));

Вот так чисто визуально проще на лог смотреть потом...

Share this post


Link to post
Share on other sites

Подскажите,пожалуйста, чайнику. Как этим пользоваться после установки?

Share this post


Link to post
Share on other sites

открыть и посмотреть лог system/logs/slow.log, можете мне скинуть я посмотрю и скажу с чем у вас проблемы и как из решить

Share this post


Link to post
Share on other sites

Скажите что меняет 

 

private $long_query_time = 0.5; // мин время запроса, который считать медленным и записывать в лог
 

Я поставил 0.9 а в лог все равно пишется 

2013-07-16 16:20:21 - Общее время: 0.12353; Кол-во запросов: 00021 /contact-us.html

Я так понимаю all_time - это полное время запроса, а тут вроде 0.12... не должно писаться.

Или я чего не понимаю, или вообще не понимаю ))))))

Share this post


Link to post
Share on other sites

Не появился slow.log.. все правильно сделал

Share this post


Link to post
Share on other sites

открыть и посмотреть лог system/logs/slow.log, можете мне скинуть я посмотрю и скажу с чем у вас проблемы и как из решить

Буду признателен за помощь. 

http://yadi.sk/d/8WN3yRs89psLX

Share this post


Link to post
Share on other sites

Подскажите, как починить?

2013-12-26 1:22:51 - PHP Notice:  Undefined index: file in .../docs/system/library/db_log.php on line 60
2013-12-26 1:22:51 - PHP Notice:  Undefined index: line in .../docs/system/library/db_log.php on line 60

строка 60:

$val = $node['file'] . "(" . $node['line'] . ")";

Share this post


Link to post
Share on other sites

через if (isset($node['file']))

Share this post


Link to post
Share on other sites

через if (isset($node['file']))

Это хорошо)))) А почему вообще вылезает notice? Я так понимаю эти переменные пишут имя файла и строку где долгий запрос. 

Share this post


Link to post
Share on other sites

По какой-то причине debug_backtrace не определил имя файла

Share this post


Link to post
Share on other sites

По какой-то причине debug_backtrace не определил имя файла

По причине понятной только ему?)))))) Поймать это никак? Эти нотисы постоянно сыпятся. От версии Oc это не может зависеть? У меня Ocstore 1.5.3.1

Edited by DAN

Share this post


Link to post
Share on other sites

не знаю :(

Я когда столкнулся - я сразу отключил - стояло на тестовом. На релиз не советую ставить, только для отладки

 

Было бы не плохо в таком случае писать в лог

if (!isset($node['file'])) {
  $debug_trace = print_r($stacktrace, true);
  $this->log->write(sprintf ("debug_trace =%s \nsql=%s",  $debug_trace, $sql));
}
  • +1 1

Share this post


Link to post
Share on other sites

Понятно, спасибо)

Share this post


Link to post
Share on other sites

хе... Это я круто насоветовал :(

Лог вырастит что мама не горюй

$debug_trace = print_r($stacktrace[1], true);
И даже так...

Он выведет весь дамп данных...

Не... плохой вариант.

if (!isset($node['file'])) {
	$debug_trace = "The error of defining file name";
	$this->log->write(sprintf ("debug_trace =%s \nsql=%s",  $debug_trace, $sql));
Edited by chukcha

Share this post


Link to post
Share on other sites

обновил архив, перекачайте у кого ошибки были

Share this post


Link to post
Share on other sites

Уважаемый Freelancer, на OC 1.5.6.1 не работает - белый экран.

 

На 1.5.5.1 работало, а на последней версии нет.

 

Как починить?

 

Очень нужная штука!

Share this post


Link to post
Share on other sites

Директива php_value display_errors 1 показала следующую ошибку.

 

Class 'mysql' not found in /public_html/vqmod/vqcache/vq2-system_library_db_log.php on line 20

 

В 20 строке $this->driver = new $driver($hostname, $username, $password, $database);

 

Как правильно добавить класс mysql?

Share this post


Link to post
Share on other sites

Кто-нибудь поможет?

Share this post


Link to post
Share on other sites

у вас нет файла

system / library / driver / database / mysql.php ?

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 halfhope
      Недавно обратился клиент (OcStore 1.5.5.1.2.) с просьбой посмотреть и узнать где именно тормоза на сайте. Так как, на сайте под завязку используются опции и аттрибуты, я стал грешить на них еще до проверки, проверка xhprof дала понять, что я не ошибался. Одним кэшированием тут не отделаться, так как данные магазина постоянно обновляются и механизм инвалидации кэша далек от идеала.
       
      Было принято решение оптимизировать функции получения списка аттрибутов и опций. Что именно сделано: Убраны дополнительные подзапросы из цикла обработки аттрибутов и опций, так как все необходимые данные можно получить в одном запросе. Так же используются PHP указатели, что позволит обработать все данные в одном цикле. Все это позволит получить все необходимые данные за один запрос и быстро из обработать. 
       
      В данном частном случае производительность увеличилась почти в 30 раз (очень много опций, значений опций и аттрибутов почти у каждого товара). 
       
      По аналогии поступил с админкой (только опции) и с модулем CSV Product Export. Будьте внимательны при использовании этого кода, он изменен, а значит и vqmod модификации, которые работают с этим участком кода могут работать не так как ожидается. 
    • By freelancer
      элемент профилирования. даёт информацию об общем времени выполнения запросов, их количестве, медленных запросах.
      параметры
      private $long_query_time = 0.5; // мин время запроса, который считать медленным и записывать в логprivate $long_query_alltime = 1;// мин суммарное время запросов, по истечению которого в лог будет выведена подробная статистикаprivate $log_slow_queries = 'slow.log'; //файл логов
      расширение написано в первую очередь для людей понимающих в оптимизации. если у вас тормозит сайт, но вы не понимаете как использовать этот инструмент, что делать с логом, обращайтесь в ЛС на форуме
      УСТАНОВКА
      1. распаковать файл в директорию system/library
      2. в файле system/startup.php заменить
      require_once(DIR_SYSTEM . 'library/db.php');
      на
      require_once(DIR_SYSTEM . 'library/db_log.php');
      сам лог искать на сервере system/logs/slow.log
      пример лога
      дата/время - суммарное время однотипных запросов - кол-во запросов - файл, строка
  • 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.