Есть ли какой-нибудь способ увидеть текущее время ответа на запрос в браузере?

#php #mysql #firefox-addon

#php #mysql #firefox-дополнение

Вопрос:

Есть ли какой-либо способ увидеть текущий запрос mysql и время его ответа в браузере? Я работаю на простом php, а не на каком-либо фреймворке. Кто-нибудь знает какие-либо дополнения для FF, которые дают мне эту информацию.

Пожалуйста, помогите

Спасибо

Ответ №1:

Я использую функцию профилирования сервера MySQL (начиная с версии 5.0.37).

 <?php

// profiling init
$set_profiling = $mysqli->query( 'SET profiling = 1' );

// some stuff
$result1 = $mysqli->query( 'SELECT DESTINATIONCODE, ZONENAME FROM ZONES' );
$result2 = $mysqli->query( 'SELECT ZONENAME FROM ZONES' );


// showing profiling printout
$show_profiles = $mysqli->query( 'SHOW PROFILES' );
while( $row = $show_profiles->fetch_assoc() ) {
    echo '<pre>';   
    print_r( $row );    
    echo '</pre>'
}
  

Кроме того, если вам нужен более подробный отчет после каждого запроса, вы можете использовать:

 $show_profile = $mysqli->query( 'SHOW PROFILE' );
  

Проверьте http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html .

Это немного сырая визуализация, но она работает.

Пример вывода:

 Array
(
    [Query_ID] => 1
    [Duration] => 0.00012000
    [Query] => SELECT DESTINATIONCODE, ZONENAME FROM ZONES
)
Array
(
    [Query_ID] => 2
    [Duration] => 0.00006800
    [Query] => SELECT ZONENAME FROM ZONES
)
  

И подробная информация о запросе # 1:

 Array
(
    [Status] => (initialization)
    [Duration] => 0.000002
)
Array
(
    [Status] => checking query cache for query
    [Duration] => 0.000003
)
Array
(
    [Status] => checking privileges on cached 
    [Duration] => 0.000002
)
Array
(
    [Status] => checking permissions
    [Duration] => 0.000001
)
Array
(
    [Status] => sending cached result to clien
    [Duration] => 0.000056
)
Array
(
    [Status] => logging slow query
    [Duration] => 0.000001
)
  

Комментарии:

1. Не могли бы вы, пожалуйста, изменить echo ‘</pre>’ на echo ‘</pre>’; в строке 16, иначе это выдаст ошибку.

Ответ №2:

Плагины Firefox не имеют доступа к запросам MySQL, которые выполняются как часть вашего PHP-кода, это просто невозможно.

Если у вас есть доступ командной строки к вашему серверу, вы можете попробовать просмотреть журнал запросов MySQL: http://dev.mysql.com/doc/refman/5.1/en/query-log.html

Комментарии:

1. но в cake php мы можем видеть текущий запрос

2. @user729022 в cakephp они используют php для проверки времени выполнения, рассмотрите возможность использования моего решения.

3. @user729022: На CakePHP написана отличная куча кода для отслеживания и отображения всех SQL-запросов, выполняемых с помощью объектных моделей. Поскольку вы не используете фреймворк, вам нужно было бы написать этот код самостоятельно, подобно тому, как предложил @Ibrahim Azhar Armar.

Ответ №3:

вы можете сделать это в php, выполнив что-то вроде этого.(результат будет в виде значения с плавающей точкой)

 function time_in_float() {
    $time = microtime();
    $time = explode(" ",$time);
    $time = $time[1]   $time[0];
    return $time;
}
$startTime = time_in_float();

$query = "SELECT SOME QUERY";
mysql_query($query);

$endTime = time_in_float();

$queryTime = ($endTime - $startTime);
echo $queryTime . ' micro seconds';
  

Комментарии:

1. я использовал решение ur, но оно показывает 0, не указывая точной разницы во времени, которая может составлять 0,0006 сек

2. это потому, что мы не получаем значение в формате float, я обновляю сообщение о том, как получить время выполнения в формате float.

3. microtime(true) уже возвращает значение float. printf('%.7f secs', - microtime(true) microtime(true)); выводит что-то вроде 0.0000119 secs . Параметр $get_as_float был добавлен в PHP 5.0.0, поэтому, если microtime(true) не возвращает значение float, я бы предложил обновить PHP.

Ответ №4:

добавьте эти строки в my.ini [вырезать вставку из моего WAMP]

 [mysqld]
port=3306
# Set Slow Query Log
long_query_time = 1
slow_query_log = 1
slow_query_log_file = "E:/wamp/logs/slowquery.log"
#Set General Log
log = "E:/wamp/logs/genquery.log"
  

Ответ №5:

Firefox ничего не знает о ваших mysql-запросах, поскольку они не обрабатываются на стороне клиента. (По крайней мере, большую часть времени, я предполагаю, что вы не говорите здесь о какой-то действительно эзотерической ситуации).

Если у вас есть определенный запрос (например, AJAX или загрузка специального файла), который выполняет запрос, вы, конечно, можете увидеть время для этого (проще всего использовать плагин firebug для этого), но вы не можете выделить запросы из своего PHP-скрипта.

Что вы, конечно, можете сделать, так это время запроса в PHP и вернуть это как значение (используя microtime() и некоторую базовую математику), но это что-то другое.

Комментарии:

1. Вы имеете в виду, что они обрабатываются на стороне сервера ?

2. Чтобы усложнить ситуацию, я исправил, добавив «не» вместо «server»; D

Ответ №6:

Вы можете добавить новые дополнения (YSlow) для этого в Firefox. я ничего не знаю о других браузерах.

Спасибо.

Комментарии:

1. Дополнение Witch? YSlow 2.1.0 не выполняет никакого анализа на стороне сервера разработчиком. yahoo.com/yslow/help

2. Да, но он ничего не знает о запросах MySQL, поскольку они обрабатываются на стороне сервера. Верно …?