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

Вот и все ! :)

Оставлять комментарии могут только зарегистрированные пользователи.

Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.

Источник: http://feedproxy.google.com/~r/codenet/read/~3/gAosyLagKUU/sqltime.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Время выполнения SQL запросов | | 2012-09-13 08:44:41 | | Программирование | | Итак, нам нужно засечь время, потраченное на выполнение SQL запросов ? Это не очень легко, но и не сложно. Начнем с определения задачи. Необходимо выдать полное время, затраченное на генерацию | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: