[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как узнать сколько запросов sql выполняеться на ст
45king
подскажите как такое реализовать

$res = mysql_query('SHOW PROFILES;') or die(mysql_error()); 
while($row = mysql_fetch_row($res)) {
echo '<div style="border:1px dotted black;">';
echo 'Query_ID: '.$row[0].'<br/>';
echo 'Duration: '.$row[1].'<br/>';;
echo 'Query: '.$row[2].'<br/>';}






Спустя 14 минут, 20 секунд (28.02.2012 - 08:28) NitroGenerate написал(а):
В конфиге, или в самом начале файла
$GLOBALS['connections']=0;
function countdb_connect(){$GLOBALS['connections']++;}

$res = mysql_query('SHOW PROFILES;') or die(mysql_error()); countdb_connect();
while($row = mysql_fetch_row($res)) {
echo '<div style="border:1px dotted black;">';
echo 'Query_ID: '.$row[0].'<br/>';
echo 'Duration: '.$row[1].'<br/>';
echo 'Query: '.$row[2].'<br/>';
echo '</div>'}
echo 'Запросов в базу:'.$GLOBALS['connections'];

Спустя 7 минут, 37 секунд (28.02.2012 - 08:35) alexbel2404 написал(а):
Цитата (NitroGenerate @ 28.02.2012 - 09:28)
В конфиге, или в самом начале файла
$GLOBALS['connections']=0;
function countdb_connect(){$GLOBALS['connections']++;}

$res = mysql_query('SHOW PROFILES;') or die(mysql_error()); countdb_connect();
while($row = mysql_fetch_row($res)) {
echo '<div style="border:1px dotted black;">';
echo 'Query_ID: '.$row[0].'<br/>';
echo 'Duration: '.$row[1].'<br/>';
echo 'Query: '.$row[2].'<br/>';
echo '</div>'}
echo 'Запросов в базу:'.$GLOBALS['connections'];

blink.gif нихрена не понял, если честно)

Спустя 14 минут, 40 секунд (28.02.2012 - 08:50) 45king написал(а):
NitroGenerate
чет вообще не че не выводит

Спустя 24 минуты, 41 секунда (28.02.2012 - 09:15) Visman написал(а):
А причина не в этом ли?
Цитата
SHOW PROFILES and SHOW PROFILE were added in MySQL 5.0.37.

Спустя 17 минут, 32 секунды (28.02.2012 - 09:32) NitroGenerate написал(а):
Про понятливость:
Сначала создадим функцию, которая бы считала все наши запросы:

function countdb_connect(){
$GLOBALS['connections']++;
}
причем будем данные будем записывать в глобальный массив, так как к нему можно легко получить доступ.
Затем, после каждого вашего запроса к бд:
mysql_query('SHOW PROFILES;') or die(mysql_error());
вызываем созданную нами функцию:
countdb_connect();
А в самом конце страницы вызываем из глобального массива число наших коннектов:
echo 'Запросов в базу: '.$GLOBALS['connections'];

Спустя 10 минут, 13 секунд (28.02.2012 - 09:42) alexbel2404 написал(а):
ну так там 1 все время будет выводиться)

Спустя 33 минуты, 4 секунды (28.02.2012 - 10:16) 45king написал(а):
точно только 1 выводиться

Спустя 6 минут, 28 секунд (28.02.2012 - 10:22) NitroGenerate написал(а):
Конечно 1, так как у вас 1 sql запрос. =)
:
mysql_query('SHOW PROFILES;') or die(mysql_error());

Спустя 2 часа, 28 минут, 6 секунд (28.02.2012 - 12:50) 45king написал(а):
Запросов в базу:1

почему то когда их 4

народ подскажите рабочий пример

Спустя 23 минуты, 12 секунд (28.02.2012 - 13:13) NitroGenerate написал(а):
Цитата (45king @ 28.02.2012 - 09:50)
Запросов в базу:1

почему то когда их 4

народ подскажите рабочий пример

Где вы видите что их 4 ? В написанном вами примере 1 запрос! и не больше!
Скорее всего у вас в других местах еще выполняются запросы.
Повторюсь, для подсчета, нужно после каждого вашего sql запроса, вызывать написанную функцию.

Спустя 6 минут, 5 секунд (28.02.2012 - 13:19) alexbel2404 написал(а):
сделай функцию, допустим query, в нее передавай линк на подключение к бд и запрос и ссылкой заранее определенный счетчик, после успешного выполнения запроса, увеличивай счетчик на 1.

Спустя 49 минут, 51 секунда (28.02.2012 - 14:09) johniek_comp написал(а):
ну так цикл 1 раз прокрутился вот вам 1 и вывело

Спустя 21 минута, 20 секунд (28.02.2012 - 14:31) twin написал(а):
Сразу после коннекта поставь это:
mysql_query('SET profiling = 1') or die(mysql_error());

а в самом конце скрипта так:

$res = mysql_query('SHOW PROFILES;') or die(mysql_error()); 
$n = 0;
while($row = mysql_fetch_row($res)) {
$n++;
echo '<div style="border:1px dotted black;">';
echo 'Query_ID: '.$row[0].'<br/>';
echo 'Duration: '.$row[1].'<br/>';;
echo 'Query: '.$row[2].'<br/>';}
echo 'Всего запросов '.$n;

Спустя 43 минуты, 18 секунд (28.02.2012 - 15:14) NitroGenerate написал(а):
Почему сразу нельзя поставить нормально вопрос, что бы мы не гадали.
В вашем коде запрос к бд 1! Всего 1!
Но Оказывается вам нужно посчитать количество строк, выданных вашим запросом.
Уфф...

Спустя 52 минуты, 8 секунд (28.02.2012 - 16:06) twin написал(а):
Нет, ребята, вы не поняли. Запрос SHOW PROFILES как раз и нужен для профилирования. Он выдает время каждого запроса в сессии, его ид (считай порядковый номер) и сам текст запроса. Количество возвращаемых им строк и являтся количеством запроса за сессию.

Тут нужно учитывать несколько особенностей.
1. Этот запрос выдает информацию о запросах за сессию, а не на странице. Поэтому его нежелательно применять на сайте под трафом. Он посчитает лишнего, если кто-то в этот момент запросит страницу. И еще, по умолчанию обычно установлено 15 запросов в сесси. Тоесть если будет больше - тоже фиг. Нужно менять настройки.

2. Профилирование по умолчанию отключено. Поэтому его нужно включить. Делается это запросом
SET profiling = 1

Все запросы после него попадут под раздачу и будут учтены запросом
SHOW PROFILES

Как то так...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.