Определить количество обращений к БД MySQL

Статус
В этой теме нельзя размещать новые ответы.

Dizeloid

Постоялец
Регистрация
17 Июл 2009
Сообщения
84
Реакции
6
Подскажите, каким образом подсчитать количество обращений к БД MySQL? Нужно вставить простой код в тело PHP-скрипта, что бы он выводил на странице количество обращений к базе после нажатия F5.
 
Подскажите, каким образом подсчитать количество обращений к БД MySQL? Нужно вставить простой код в тело PHP-скрипта, что бы он выводил на странице количество обращений к базе после нажатия F5.
Писать свою функцию подсчета. Встроенных функций, решающих такую задачу - нет. Можно посмотреть например, на get_num_queries() в WP
 
Можно посмотреть например, на get_num_queries() в WP
Но у меня сайт построен не на движке WordPress.
Мне тут посоветовали вставить такой код:
PHP:
$query_counter = 0;
function mysql_query_counter(){
    global $query_counter;
    $query_counter ++;
    return call_user_func_array( 'mysql_query', func_get_args() );
}
но он отказывается работать :(
 
  • Заблокирован
  • #4
"Он отказывается работать"
Код же не подсобный рабочий, верно? Как он может отказываться?
Впредь всегда старайтесь писать, что конкретно вы делаете и как именно это не получается.

По этому фрагменту кода: действительно, в переменной $query_counter будет содержаться количество обращений к базе данных, ЕСЛИ вы все вызовы mysql_query замените на mysql_query_counter.

Неудобно? Еще бы! Именно поэтому такие общие места, как работа с базой, надо помещать в собственные обертки (функции или объекты - неважно), которые при необходимости можно изменить изнутри, а снаружи для всех остальных частей программы они будут выглядеть и работать как прежде (называется этот великолепный кунштюк "инкапсуляция").
 
Я наверное не понимаю того что вы пишите.:nezn:
Хочу уточнить - существует ли способ путем вставки в тело PHP файла определить колличество обращений к БД? Вот например как это происходит со временем формирования страницы:
PHP:
<?php
	$fts = explode(' ' , microtime());
	$sec_ts = $fts[1] - $sts[1];
	$msec_ts = $fts[0] - $sts[0];
	$time_ts = $sec_ts + $msec_ts;
	print FILE_INDEX_TIME_CREATE_PAGE . $time_ts . ' sec';
?>
Есть что нибудь такое же простое и доступное?
По этому фрагменту кода: действительно, в переменной $query_counter будет содержаться количество обращений к базе данных, ЕСЛИ вы все вызовы mysql_query замените на mysql_query_counter.
Боюсь показать идиотом но вы имеете ввиду это? Или я чего то не понимаю :thenks:
PHP:
$query_counter = 0;
function mysql_query_counter(){
    global $query_counter;
    $query_counter ++;
    return call_user_func_array( 'mysql_query_counter', func_get_args() );
}
 
Я наверное не понимаю того что вы пишите.:nezn:
Хочу уточнить - существует ли способ путем вставки в тело PHP файла определить колличество обращений к БД? Вот например как это происходит со временем формирования страницы:
PHP:
<?php
    $fts = explode(' ' , microtime());
    $sec_ts = $fts[1] - $sts[1];
    $msec_ts = $fts[0] - $sts[0];
    $time_ts = $sec_ts + $msec_ts;
    print FILE_INDEX_TIME_CREATE_PAGE . $time_ts . ' sec';
?>
Есть что нибудь такое же простое и доступное?

Боюсь показать идиотом но вы имеете ввиду это? Или я чего то не понимаю :thenks:
PHP:
$query_counter = 0;
function mysql_query_counter(){
    global $query_counter;
    $query_counter ++;
    return call_user_func_array( 'mysql_query_counter', func_get_args() );
}

посмотри внимательно как у тебя функция называется и что она возвращает :D:D:D
 
  • Заблокирован
  • #7
Да просто добать счётчик в функцию, которая осуществляет запрос к бд.
А в конце страницы выведи конечное состояние счётчика - это и будет кол-во запросов к бд на одну страницу.
 
  • Заблокирован
  • #8
Есть что нибудь такое же простое и доступное?
Чтобы можно было просто в начале и конце поставить метки - такого нет.
Боюсь показаться идиотом, но вы имеете ввиду это?
Да. Давайте разберемся, что делает эта функция.
PHP:
$query_counter = 0;
Объявляем счетчик. Это надо делать где-то в самом начале скрипта, не в функции, таким образом, переменная окажется в глобальной области видимости.
PHP:
function mysql_query_counter(){
    global $query_counter;
    $query_counter ++;
Эта функция сначала импортирует в себя счетчик, потом увеличивает его на единицу. Затем она непосредственно осуществляет запрос к базе с помощью стандартной функции mysql_query, передавая ей параметры, с которыми была запущена сама.
Т.е. mysql_query_counter() - это такой имитатор mysql_query(), который делает все то же самое, только заодно считает. Следовательно и пользоваться им надо точно так же.
PHP:
$result = mysql_query_counter("SELECT * FROM british_science_news WHERE news_id = 11079")

Следовательно, придется все mysql_query менять на новую функцию. Это если у вас голые mysql_query используются, конечно. Так это или нет, расскажите, и дальше видно будет, что делать.
 
Уйней страдаете господа..Вы забыли про айпи.
На запрос идет фильтр query. Пишите простой плагин, в него засовываете обработчик этого фильтра, в нем делаете тупо подсчет обращений. И все...никакой правки кода...Все делается плагином, вкл/выкл, также можно и показывать эти запросы, разграничивать кто, что видит и прочие вкусности.


вот вам, навскидку пример такого плагина:
PHP:
<?php
/*
Plugin Name: TostRss
Plugin URI: http://nulled.ws/
Description: Counter for mysql querys.
Version: 1.0.0
Author: TostRss
Author URI: http://nulled.ws/
*/
add_filter('query', 'count_query', 1);
function count_query($query){
    global $count_query;
    $count_query++;
    return $query;
}
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху