DataLife Engine > PHP > Время выполнения SQL запросов
Время выполнения SQL запросов12 января 2008. Разместил: podpole |
Итак, нам нужно засечь время, потраченное на выполнение 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 запросы и подсоединитесь к базе данных. Вот и все ! :) |