有没有办法在浏览器中查看当前的mysql查询及其响应时间? 我正在研究简单的 php,而不是在任何框架上。任何人都知道FF的任何插件,这给了我这些信息。
请帮忙
谢谢
我使用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
)
Firefox插件无法访问作为
PHP代码的一部分发生的MySQL查询,这根本不可能。
如果你对你的服务器有shell访问权限,你可以尝试查看MySQL查询日志:http://dev.mysql.com/doc/refman/5.1/en/query-log.html
你可以在
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';
将此行添加到我的.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"
Firefox 对你的 mysql 查询一无所知,因为它们不是在客户端处理的。(至少,大多数时候,我猜你在这里谈论的不是一些非常深奥的情况)。
如果你有一个特定的请求(例如AJAX,或加载一个特殊的文件)来执行请求,你当然可以看到它的时间(最简单的方法是使用firebug插件),但你不能从你的PHP脚本中挑选出查询。
当然,您可以做的是在PHP中对查询进行计时,并将其作为值返回(使用microtime()
和一些基本的数学运算),但那是另一回事。
您可以在Firefox中为此添加新的附加组件(YSlow)。 我对其他浏览器一无所知。
谢谢。