mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
网站统计 x14_02
This commit is contained in:
@@ -51,6 +51,11 @@
|
||||
padding: 15px 0 15px 15px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.overview_list .w_p20{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.overview_list .ov_num{
|
||||
font-size: 14px;
|
||||
margin-top: 7px;
|
||||
|
||||
@@ -299,11 +299,16 @@ def setGlobalConf():
|
||||
return mw.returnJson(True, '设置成功')
|
||||
|
||||
|
||||
def getDefaultSite():
|
||||
def getSiteListData():
|
||||
lua_dir = getServerDir() + "/lua"
|
||||
path = lua_dir + "/default.json"
|
||||
data = mw.readFile(path)
|
||||
return mw.returnJson(True, 'OK', json.loads(data))
|
||||
return json.loads(data)
|
||||
|
||||
|
||||
def getDefaultSite():
|
||||
data = getSiteListData()
|
||||
return mw.returnJson(True, 'OK', data)
|
||||
|
||||
|
||||
def setDefaultSite(name):
|
||||
@@ -325,6 +330,49 @@ def toSumField(sql):
|
||||
return field
|
||||
|
||||
|
||||
def getSiteStatInfo(domain, query_date):
|
||||
conn = pSqliteDb('request_stat', domain)
|
||||
conn = conn.where("1=1", ())
|
||||
|
||||
field = 'time,req,pv,uv,ip,length'
|
||||
field_sum = toSumField(field.replace("time,", ""))
|
||||
|
||||
time_field = "substr(time,1,6),"
|
||||
|
||||
field_sum = time_field + field_sum
|
||||
conn = conn.field(field_sum)
|
||||
if query_date == "today":
|
||||
todayTime = time.strftime(
|
||||
'%Y%m%d00', time.localtime(time.time() - 0 * 86400))
|
||||
conn.andWhere("time >= ?", (todayTime,))
|
||||
elif query_date == "yesterday":
|
||||
startTime = time.strftime(
|
||||
'%Y%m%d00', time.localtime(time.time() - 1 * 86400))
|
||||
endTime = time.strftime(
|
||||
'%Y%m%d00', time.localtime(time.time()))
|
||||
conn.andWhere("time>=? and time<=?", (startTime, endTime))
|
||||
elif query_date == "l7":
|
||||
todayTime = time.strftime(
|
||||
'%Y%m%d00', time.localtime(time.time() - 7 * 86400))
|
||||
conn.andWhere("time >= ?", (todayTime,))
|
||||
elif query_date == "l30":
|
||||
todayTime = time.strftime(
|
||||
'%Y%m%d00', time.localtime(time.time() - 30 * 86400))
|
||||
conn.andWhere("time >= ?", (todayTime,))
|
||||
else:
|
||||
exlist = query_date.split("-")
|
||||
start = time.strftime(
|
||||
'%Y%m%d00', time.localtime(int(exlist[0])))
|
||||
end = time.strftime(
|
||||
'%Y%m%d23', time.localtime(int(exlist[1])))
|
||||
conn.andWhere("time >= ? and time <= ? ", (start, end,))
|
||||
|
||||
# 统计总数
|
||||
stat_list = conn.inquiry(field)
|
||||
del(stat_list[0]['time'])
|
||||
return stat_list[0]
|
||||
|
||||
|
||||
def getOverviewList():
|
||||
args = getArgs()
|
||||
check = checkArgs(args, ['site', 'query_date', 'order'])
|
||||
@@ -388,6 +436,25 @@ def getOverviewList():
|
||||
return mw.returnJson(True, 'ok', data)
|
||||
|
||||
|
||||
def getSiteList():
|
||||
args = getArgs()
|
||||
check = checkArgs(args, ['query_date'])
|
||||
if not check[0]:
|
||||
return check[1]
|
||||
|
||||
query_date = args['query_date']
|
||||
|
||||
data = getSiteListData()
|
||||
data_list = data["list"]
|
||||
|
||||
rdata = []
|
||||
for x in data_list:
|
||||
tmp = getSiteStatInfo(x, query_date)
|
||||
tmp["site"] = x
|
||||
rdata.append(tmp)
|
||||
return mw.returnJson(True, 'ok', rdata)
|
||||
|
||||
|
||||
def getLogsRealtimeInfo():
|
||||
'''
|
||||
实时信息
|
||||
@@ -829,6 +896,8 @@ if __name__ == "__main__":
|
||||
print(getDefaultSite())
|
||||
elif func == 'get_overview_list':
|
||||
print(getOverviewList())
|
||||
elif func == 'get_site_list':
|
||||
print(getSiteList())
|
||||
elif func == 'get_logs_list':
|
||||
print(getLogsList())
|
||||
elif func == 'get_logs_error_list':
|
||||
|
||||
@@ -624,14 +624,9 @@ wsPost('get_default_site','',{},function(rdata){
|
||||
}
|
||||
|
||||
|
||||
var ovTimer = null;
|
||||
function wsSitesListRequest(page){
|
||||
clearInterval(ovTimer);
|
||||
|
||||
var args = {};
|
||||
|
||||
args['site'] = $('select[name="site"]').val();
|
||||
|
||||
var query_date = 'today';
|
||||
if ($('#time_choose').attr("data-name") != ''){
|
||||
query_date = $('#time_choose').attr("data-name");
|
||||
@@ -639,33 +634,93 @@ function wsSitesListRequest(page){
|
||||
query_date = $('#search_time button.cur').attr("data-name");
|
||||
}
|
||||
args['query_date'] = query_date;
|
||||
args['order'] = $('#time_order button.cur').attr('data-name');
|
||||
|
||||
|
||||
var select_option = $('.indicators-container input:checked').parent().attr('data-name');
|
||||
wsPost('get_site_list', '' ,args, function(rdata){
|
||||
|
||||
console.log($('.indicators-container input:checked').parent().find('span').text());
|
||||
// console.log(select_option);
|
||||
|
||||
wsPost('get_overview_list', '' ,args, function(rdata){
|
||||
var rdata = $.parseJSON(rdata.data);
|
||||
var list = '';
|
||||
var data = rdata.data.data;
|
||||
var statData = rdata.data.stat_list;
|
||||
var data = rdata.data;
|
||||
|
||||
console.log(statData, data);
|
||||
|
||||
var stat_pv = statData['pv'] == null?0:statData['pv'];
|
||||
var stat_uv = statData['uv'] == null?0:statData['uv'];
|
||||
var stat_ip = statData['ip'] == null?0:statData['ip'];
|
||||
var stat_length = statData['length'] == null?0:statData['length'];
|
||||
var stat_req = statData['req'] == null?0:statData['req'];
|
||||
var stat_pv = 0;
|
||||
var stat_uv = 0;
|
||||
var stat_ip = 0;
|
||||
var stat_length = 0;
|
||||
var stat_req = 0;
|
||||
|
||||
console.log(rdata, data);
|
||||
|
||||
var list = '';
|
||||
if (data.length > 0){
|
||||
for(i in data){
|
||||
|
||||
var tmp_pv = 0;
|
||||
var tmp_uv = 0;
|
||||
var tmp_ip = 0;
|
||||
var tmp_length = 0;
|
||||
var tmp_req = 0;
|
||||
|
||||
if (data[i]['pv'] != null){
|
||||
tmp_pv = data[i]['pv'];
|
||||
stat_pv += data[i]['pv'];
|
||||
}
|
||||
|
||||
if (data[i]['uv'] != null){
|
||||
tmp_uv = data[i]['uv'];
|
||||
stat_uv += data[i]['uv'];
|
||||
}
|
||||
|
||||
if (data[i]['ip'] != null){
|
||||
tmp_ip = data[i]['ip'];
|
||||
stat_ip += data[i]['ip'];
|
||||
}
|
||||
|
||||
if (data[i]['length'] != null){
|
||||
tmp_length = data[i]['length'];
|
||||
stat_length += data[i]['length'];
|
||||
}
|
||||
|
||||
if (data[i]['req'] != null){
|
||||
tmp_req = data[i]['req'];
|
||||
stat_req += data[i]['req'];
|
||||
}
|
||||
|
||||
list += '<tr>';
|
||||
list += '<td>' + data[i]['site']+'</td>';
|
||||
list += '<td>' + tmp_pv +'</td>';
|
||||
list += '<td>' + tmp_uv +'</td>';
|
||||
list += '<td>' + tmp_ip +'</td>';
|
||||
list += '<td>' + tmp_req +'</td>';
|
||||
list += '<td>' + toSize(tmp_length) +'</td>';
|
||||
list += '<td><a data-id="'+i+'" href="javascript:;" class="btlink details" title="设置">设置</a></td>';
|
||||
list += '</tr>';
|
||||
}
|
||||
} else{
|
||||
list += '<tr><td colspan="14" style="text-align:center;">网站列表为空</td></tr>';
|
||||
}
|
||||
|
||||
$('.overview_list .overview_box:eq(0) .ov_num').text(stat_pv);
|
||||
$('.overview_list .overview_box:eq(1) .ov_num').text(stat_uv);
|
||||
$('.overview_list .overview_box:eq(2) .ov_num').text(stat_ip);
|
||||
$('.overview_list .overview_box:eq(3) .ov_num').text(toSize(stat_length));
|
||||
$('.overview_list .overview_box:eq(4) .ov_num').text(stat_req);
|
||||
|
||||
|
||||
var table = '<div class="tablescroll">\
|
||||
<table id="DataBody" class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0" style="border: 0 none;">\
|
||||
<thead><tr>\
|
||||
<th>网站</th>\
|
||||
<th>流览量</th>\
|
||||
<th>访客数</th>\
|
||||
<th>IP数</th>\
|
||||
<th>请求数</th>\
|
||||
<th>总流量</th>\
|
||||
<th>操作</th>\</tr></thead>\
|
||||
<tbody>\
|
||||
'+ list +'\
|
||||
</tbody></table>\
|
||||
</div>\
|
||||
<div id="wsPage" class="dataTables_paginate paging_bootstrap page"></div>';
|
||||
$('#ws_table').html(table);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -688,32 +743,24 @@ var html = '<div>\
|
||||
</div>\
|
||||
<!-- stat --->\
|
||||
<div class="overview_list" style="padding-top:10px;">\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">浏览量(PV)<i class="tips" data-toggle="tooltip" data-placement="top" title="用户每次打开网站页面被记录1次。用户多次打开同一页面,访问量值累计多次。此指标衡量网站访问量情况。">?</i></p>\
|
||||
<div class="overview_box w_p20">\
|
||||
<p class="ov_title">总浏览量(PV)</p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">访客量(UV)<i class="tips" data-toggle="tooltip" data-placement="top" title="访问您网站的上网电脑数量(以cookie为依据),此指标衡量独立访客数量情况。">?</i></p>\
|
||||
<div class="overview_box w_p20">\
|
||||
<p class="ov_title">总访客量(UV)</p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">IP数<i class="tips" data-toggle="tooltip" data-placement="top" title="当前时间段内您网站的独立访问ip数。">?</i></p>\
|
||||
<div class="overview_box w_p20">\
|
||||
<p class="ov_title">总IP数</p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">流量<i class="tips" data-toggle="tooltip" data-placement="top" title="当前时间段内您网站的总响应流量大小。包括已排除的请求。">?</i></p>\
|
||||
<div class="overview_box w_p20">\
|
||||
<p class="ov_title">总流量</p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">请求<i class="tips" data-toggle="tooltip" data-placement="top" title="当前时间段内您网站的总请求数量。包括已排除的请求。">?</i></p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">实时流量<i class="tips" data-toggle="tooltip" data-placement="top" title="当前10秒内您网站的实时流量大小。包括已排除的请求。">?</i></p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
<div class="overview_box">\
|
||||
<p class="ov_title">每秒请求<i class="tips" data-toggle="tooltip" data-placement="top" title="当前10秒内您网站的实时请求数量。包括已排除的请求。">?</i></p>\
|
||||
<div class="overview_box w_p20">\
|
||||
<p class="ov_title">总请求</p>\
|
||||
<p class="ov_num">0</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
|
||||
Reference in New Issue
Block a user