Перейти к содержанию

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

 

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

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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

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'] . ")";

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


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

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

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


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

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

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

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


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

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

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


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

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

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

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

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


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

не знаю :(

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

 

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

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

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


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

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

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


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

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

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

$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));
Изменено пользователем chukcha

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


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

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

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


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

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

 

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

 

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

 

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

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


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

Директива 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?

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


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

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

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


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

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

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

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От halfhope
      Недавно обратился клиент (OcStore 1.5.5.1.2.) с просьбой посмотреть и узнать где именно тормоза на сайте. Так как, на сайте под завязку используются опции и аттрибуты, я стал грешить на них еще до проверки, проверка xhprof дала понять, что я не ошибался. Одним кэшированием тут не отделаться, так как данные магазина постоянно обновляются и механизм инвалидации кэша далек от идеала.
       
      Было принято решение оптимизировать функции получения списка аттрибутов и опций. Что именно сделано: Убраны дополнительные подзапросы из цикла обработки аттрибутов и опций, так как все необходимые данные можно получить в одном запросе. Так же используются PHP указатели, что позволит обработать все данные в одном цикле. Все это позволит получить все необходимые данные за один запрос и быстро из обработать. 
       
      В данном частном случае производительность увеличилась почти в 30 раз (очень много опций, значений опций и аттрибутов почти у каждого товара). 
       
      По аналогии поступил с админкой (только опции) и с модулем CSV Product Export. Будьте внимательны при использовании этого кода, он изменен, а значит и vqmod модификации, которые работают с этим участком кода могут работать не так как ожидается. 
    • От 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
      пример лога
      дата/время - суммарное время однотипных запросов - кол-во запросов - файл, строка
  • Последние посетители   0 пользователей онлайн

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

×

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

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