Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Время выполнения SQL запросов

Автор: webclass.ru

Итак, нам нужно засечь время, потраченное на выполнение 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) . '%');

?>

Вот и все ! :)

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS