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

freelancer    1 410

index.php?app=downloads&module=display&section=screenshot&id=786

Название: db_log

Добавил: freelancer

Добавлен: 25 дек. 2012

Категория: Прочее

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

параметры

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

Нажмите здесь, чтобы скачать файл

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


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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

 

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

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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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

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

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


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

не знаю :(

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

 

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

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

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


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

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

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


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

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

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

$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    1 410

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

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


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

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

 

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

 

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 410
SpideR    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?

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


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

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

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


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

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

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 пользователей онлайн

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