Skip to content

Commit 9cdc005

Browse files
authored
Add files via upload
0 parents  commit 9cdc005

File tree

1 file changed

+207
-0
lines changed

1 file changed

+207
-0
lines changed

slowquery.php

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
<?php
2+
session_start();
3+
4+
if($_GET['action'] == "logout"){
5+
unset($_SESSION['transmit_dbname']);
6+
exit('<script>top.location.href="slowquery.php"</script>');
7+
}
8+
?>
9+
10+
<html>
11+
<head>
12+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
13+
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
14+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
15+
<title>慢查询日志</title>
16+
<link rel="stylesheet" href="./css/simple-line-icons/css/simple-line-icons.css">
17+
<link rel="stylesheet" href="./css/font-awesome/css/fontawesome-all.min.css">
18+
<link rel="stylesheet" href="./css/styles.css">
19+
20+
<script language="javascript">
21+
function TestBlack(TagName){
22+
var obj = document.getElementById(TagName);
23+
if(obj.style.display=="block"){
24+
obj.style.display = "none";
25+
}else{
26+
obj.style.display = "block";
27+
}
28+
}
29+
</script>
30+
31+
<script>
32+
function ss(){
33+
var slt=document.getElementById("select");
34+
if(slt.value==""){
35+
alert("请选择数据库!!!");
36+
return false;
37+
}
38+
return true;
39+
}
40+
</script>
41+
</head>
42+
43+
<body>
44+
<div class="card">
45+
<div class="card-header bg-light">
46+
<h1><a href="slowquery.php?action=logout">MySQL 慢查询分析</a></h1>
47+
</div>
48+
49+
<div class="card-body">
50+
<div class="table-responsive">
51+
<form action="" method="post" name="sql_statement" id="form1" onsubmit=" return ss()">
52+
<div>
53+
<tr>
54+
<td><select id="select" name="dbname">
55+
<option value="">选择你的数据库</option>
56+
<?php
57+
require 'config.php';
58+
$result = mysqli_query($con,"SELECT dbname FROM dbinfo");
59+
while($row = mysqli_fetch_array($result)){
60+
echo "<option value=\"".$row[0]."\">".$row[0]."</option>"."<br>";
61+
}
62+
?>
63+
</select><td>
64+
</tr>
65+
<input name="submit" type="submit" class="STYLE3" value="搜索" />
66+
</label>
67+
</div>
68+
</form>
69+
70+
<?php
71+
if(isset($_POST['submit'])){
72+
$dbname=$_POST['dbname'];
73+
session_start();
74+
$_SESSION['transmit_dbname']=$dbname;
75+
require 'show.html';
76+
} else {
77+
session_start();
78+
$dbname=$_SESSION['transmit_dbname'];
79+
if(!empty($dbname)){
80+
require 'show.html';
81+
} else {
82+
require 'top.html';
83+
}
84+
}
85+
?>
86+
87+
<table class="table table-hover">
88+
<thead>
89+
<tr>
90+
<th>抽象语句</th>
91+
<th>数据库</th>
92+
<th>用户名</th>
93+
<th>最近时间</th>
94+
<th>次数</th>
95+
<th>平均时间</th>
96+
<th>最小时间</th>
97+
<th>最大时间</th>
98+
</tr>
99+
</thead>
100+
<tbody>
101+
102+
<?php
103+
session_start();
104+
$dbname=$_SESSION['transmit_dbname'];
105+
require 'config.php';
106+
$perNumber=50; //每页显示的记录数
107+
$page=$_GET['page']; //获得当前的页面值
108+
$count=mysqli_query($con,"select count(*) from mysql_slow_query_review"); //获得记录总数
109+
$rs=mysqli_fetch_array($count);
110+
$totalNumber=$rs[0];
111+
$totalPage=ceil($totalNumber/$perNumber); //计算出总页数
112+
113+
if (empty($page)) {
114+
$page=1;
115+
} //如果没有值,则赋值1
116+
117+
$startCount=($page-1)*$perNumber; //分页开始,根据此方法计算出开始的记录
118+
119+
if(!empty($dbname)){
120+
$sql = "SELECT r.checksum,r.fingerprint,h.db_max,h.user_max,r.last_seen,SUM(h.ts_cnt) AS ts_cnt,
121+
ROUND(MIN(h.Query_time_min),3) AS Query_time_min,ROUND(MAX(h.Query_time_max),3) AS Query_time_max,
122+
ROUND(SUM(h.Query_time_sum)/SUM(h.ts_cnt),3) AS Query_time_avg,r.sample
123+
FROM mysql_slow_query_review AS r JOIN mysql_slow_query_review_history AS h
124+
ON r.checksum=h.checksum
125+
WHERE h.db_max = '${dbname}'
126+
AND r.last_seen >= SUBDATE(NOW(),INTERVAL 31 DAY)
127+
GROUP BY r.checksum
128+
ORDER BY r.last_seen DESC,ts_cnt DESC LIMIT $startCount,$perNumber";
129+
} else {
130+
$sql = "SELECT r.checksum,r.fingerprint,h.db_max,h.user_max,r.last_seen,SUM(h.ts_cnt) AS ts_cnt,
131+
ROUND(MIN(h.Query_time_min),3) AS Query_time_min,ROUND(MAX(h.Query_time_max),3) AS Query_time_max,
132+
ROUND(SUM(h.Query_time_sum)/SUM(h.ts_cnt),3) AS Query_time_avg,r.sample
133+
FROM mysql_slow_query_review AS r JOIN mysql_slow_query_review_history AS h
134+
ON r.checksum=h.checksum
135+
WHERE r.last_seen >= SUBDATE(NOW(),INTERVAL 31 DAY)
136+
GROUP BY r.checksum
137+
ORDER BY r.last_seen DESC,ts_cnt DESC LIMIT $startCount,$perNumber";
138+
}
139+
140+
$result = mysqli_query($con,$sql);
141+
142+
echo "慢查询日志agent采集阀值是每10分钟/次,SQL执行时间(单位:秒)</br>";
143+
144+
require 'SqlFormatter.php';
145+
146+
while($row = mysqli_fetch_array($result))
147+
{
148+
echo "<tr>";
149+
echo "<td width='100px' onclick=\"TestBlack('${row['0']}')\">✚ &nbsp;" .substr("{$row['1']}",0,50)
150+
."<div id='${row['0']}' style='display:none;'><a href='slowquery_explain.php?checksum={$row['0']}'>" .SqlFormatter::format($row['1']) ."</br></div></a></td>";
151+
echo "<td>{$row['2']}</td>";
152+
echo "<td>{$row['3']}</td>";
153+
echo "<td>{$row['4']}</td>";
154+
echo "<td>{$row['5']}</td>";
155+
echo "<td>{$row['8']}</td>";
156+
echo "<td>{$row['6']}</td>";
157+
echo "<td>{$row['7']}</td>";
158+
echo "</tr>";
159+
}
160+
//end while
161+
162+
echo "</tbody>";
163+
echo "</table>";
164+
echo "</div>";
165+
echo "</div>";
166+
echo "</div>";
167+
168+
$maxPageCount=10;
169+
$buffCount=2;
170+
$startPage=1;
171+
172+
if ($page< $buffCount){
173+
$startPage=1;
174+
}else if($page>=$buffCount and $page<$totalPage-$maxPageCount){
175+
$startPage=$page-$buffCount+1;
176+
}else{
177+
$startPage=$totalPage-$maxPageCount+1;
178+
}
179+
180+
$endPage=$startPage+$maxPageCount-1;
181+
182+
$htmlstr="";
183+
184+
$htmlstr.="<table class='bordered' border='1' align='center'><tr>";
185+
if ($page > 1){
186+
$htmlstr.="<td> <a href='slowquery.php?dbname=$dbname&page=" . "1" . "'>第一页</a></td>";
187+
$htmlstr.="<td> <a href='slowquery.php?dbname=$dbname&page=" . ($page-1) . "'>上一页</a></td>";
188+
}
189+
190+
$htmlstr.="<td> 总共${totalPage}页</td>";
191+
192+
for ($i=$startPage;$i<=$endPage; $i++){
193+
$htmlstr.="<td><a href='slowquery.php?dbname=$dbname&page=" . $i . "'>" . $i . "</a></td>";
194+
}
195+
196+
if ($page<$totalPage){
197+
$htmlstr.="<td><a href='slowquery.php?dbname=$dbname&page=" . ($page+1) . "'>下一页</a></td>";
198+
$htmlstr.="<td><a href='slowquery.php?dbname=$dbname&page=" . $totalPage . "'>最后页</a></td>";
199+
200+
}
201+
202+
$htmlstr.="</tr></table>";
203+
204+
echo $htmlstr;
205+
206+
?>
207+

0 commit comments

Comments
 (0)