Главная » Полезные статьи » Язык PHP » Время выполнения SQL запросов
Распечатать статью

Время выполнения 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) . '%'); ?>

Вот и все ! :)

Источник: internet-technologies.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи