Мой сайт
Главная
Вход
Регистрация
Вторник, 17.06.2025, 19:30Приветствую Вас Гость | RSS
Меню сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » 2010 » Февраль » 10 » Время выполнения SQL запросов.
03:07
Время выполнения SQL запросов.

Итак, нам нужно засечь время, потраченное на выполнение SQL запросов ? Это не очень легко, но и не сложно. Начнем с определения задачи. Необходимо выдать полное время, затраченное на генерацию страницы и время, затраченное на выполнения SQL запросов, еще было бы здорово вывести процент от общего времени.

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

function do_something(){
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
//here is the code to execute
//.........

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
$tpassed = ($tend - $tstart);
return($tpassed);
}

Для конкретно нашей задачи, нужно модифицировать эту функцию так, чтобы выполнялись SQL запросы:

 //запрос передается как аргумент
function do_query($query){
//подсоединяем две глобальные переменные
global $result;
global $qnum;
//счетчик запросов
$qnum++;
//засекаем время старта
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
//выполняем запрос
$result = MYSQL_QUERY($query);
//засекаем время окончания
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
$tpassed = ($tend - $tstart);
//возвращаем время, затраченное на запрос
return($tpassed);
}

Теперь у нас есть функция, которая считает запросы и выдает время экзекуции :) Вот как она должна быть использована:

//Не забудьте где-нибудь в начале скрипта объявить эти две переменные:
$result=0;
$qnum=0;
//...
//Вызов функции:
$sql_time+=do_query("SELECT * FROM SOME_TABLE");
//Теперь можно разбирать полученные данные:
while($row = mysql_fetch_array($result)){
print($row['Text']);
}

В окончательном скрипте нужно еще засечь полное время выполнения, таким же способом, что использовался в функции. Внизу код такого скрипта, который заработает, если вы вставите реальные SQL запросы и подсоединитесь к базе данных.

//Засекаем время старта
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;

//Коннектимся к базе:
include 'connect.php';

//Объявляем переменные
$result=0;
$qnum=0;

//Объявляем нашу функцию
function do_query($query){
global $result;
global $qnum;
$qnum++;

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;

$result = MYSQL_QUERY($query);

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
$tpassed = ($tend - $tstart);
return($tpassed);
}

//Далее тело скрипта
$sql_time+=do_query("SELECT * FROM SOME_TABLE");
//Обрабатываем данные
while($row = mysql_fetch_array($result)){
print($row['Text']);
}

//Пример еще одного запроса
$sql_time+=do_query("SELECT * FROM ANOTHER");
//Обрабатываем данные
$row = mysql_fetch_array($result);
print($row['Another_Text']);

//Засекаем время окончания
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
$total = ($tend - $tstart);

//Выдаем время:
printf("SQL запросов: $qnum, время mysql: %f,
всего затрачено: %f секунд !", $sql_time, $total);

//Вычисляем процент времени:
$sqlpercent = ($sql_time*100)/$total;
print('Процент времени на MySQL: '. round($sqlpercent, 2) . '%');
?>

Вот и все ! :)

Просмотров: 453 | Добавил: cocoucoz | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Календарь
«  Февраль 2010  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728

Архив записей


Copyright MyCorp © 2025Конструктор сайтовuCoz