diff --git a/class/core/db.py b/class/core/db.py index b267c0268..6c401d9e3 100755 --- a/class/core/db.py +++ b/class/core/db.py @@ -128,7 +128,7 @@ class Sql(): try: sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + \ self.__OPT_WHERE + self.__OPT_GROUP + self.__OPT_ORDER + self.__OPT_LIMIT - # print(sql) + # print(sql, self.__OPT_PARAM) result = self.__DB_CONN.execute(sql, self.__OPT_PARAM) data = result.fetchall() # 构造字曲系列 diff --git a/plugins/webstats/index.html b/plugins/webstats/index.html index 9ea712da2..4fbee69a8 100755 --- a/plugins/webstats/index.html +++ b/plugins/webstats/index.html @@ -36,6 +36,55 @@ border-radius: 0px; } +.overview_list{ + background-color: #FAFAFA; + border: #ddd 1px solid; + width: 100%; + font-size: 0; + color: #78797D; +} + +.overview_list .overview_box{ + width: 14.2%; + display: inline-block; + font-size: 12px; + padding: 15px 0 15px 15px; + vertical-align: top; +} +.overview_list .ov_num{ + font-size: 20px; + margin-top: 7px; + color: #333; +} + +.indicators { + margin-top: 15px; + position: relative; +} + +.indicators-container { + padding: 5px; +} + +.indicators-container>span { + color: #787a7d; + margin-right: 10px; +} + +.indicators-label { + display: inline-block; + width: 95px; + height: 26px; + line-height: 26px; + cursor: pointer; +} + +.indicators-label input { + height: 13px; + margin: 0 5px 0 0; + vertical-align: -2px; +} + .ws_tips { color: #777; margin-left: -10px; @@ -130,6 +179,7 @@
服务
概览
+网站列表
蜘蛛统计
客服端统计
错误日志
diff --git a/plugins/webstats/index.py b/plugins/webstats/index.py index 8c7ac5f68..58aab53d4 100755 --- a/plugins/webstats/index.py +++ b/plugins/webstats/index.py @@ -313,6 +313,78 @@ def setDefaultSite(name): return mw.returnJson(True, 'OK') +def toSumField(sql): + l = sql.split(",") + field = "" + for x in l: + field += "sum(" + x + ") as " + x + "," + field = field.strip(',') + return field + + +def getOverviewList(): + args = getArgs() + check = checkArgs(args, ['site', 'query_date', 'order']) + if not check[0]: + return check[1] + + domain = args['site'] + query_date = args['query_date'] + order = args['order'] + + setDefaultSite(domain) + 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,8)," + if order == "hour": + time_field = "substr(time,9,10)," + + 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']) + + # 分组统计 + dlist = conn.group(time_field.strip(",")).inquiry(field) + + data = {} + data['data'] = dlist + data['stat_list'] = stat_list[0] + + return mw.returnJson(True, 'ok', data) + + def getLogsList(): args = getArgs() check = checkArgs(args, ['page', 'page_size', @@ -452,15 +524,6 @@ def getLogsErrorList(): return mw.returnJson(True, 'ok', data) -def toSumField(sql): - l = sql.split(",") - field = "" - for x in l: - field += "sum(" + x + ") as " + x + "," - field = field.strip(',') - return field - - def getClientStatList(): args = getArgs() check = checkArgs(args, ['page', 'page_size', @@ -491,9 +554,11 @@ def getClientStatList(): '%Y%m%d00', time.localtime(time.time() - 0 * 86400)) stat.where("time >= ?", (todayTime,)) elif query_date == "yesterday": - todayTime = time.strftime( + startTime = time.strftime( '%Y%m%d00', time.localtime(time.time() - 1 * 86400)) - stat.where("time >= ?", (todayTime,)) + endTime = time.strftime( + '%Y%m%d00', time.localtime(time.time())) + stat.where("time>=? and time<=?", (startTime, endTime)) elif query_date == "l7": todayTime = time.strftime( '%Y%m%d00', time.localtime(time.time() - 7 * 86400)) @@ -632,9 +697,11 @@ def getSpiderStatList(): '%Y%m%d00', time.localtime(time.time() - 0 * 86400)) stat.where("time >= ?", (todayTime,)) elif query_date == "yesterday": - todayTime = time.strftime( + startTime = time.strftime( '%Y%m%d00', time.localtime(time.time() - 1 * 86400)) - stat.where("time >= ?", (todayTime,)) + endTime = time.strftime( + '%Y%m%d00', time.localtime(time.time())) + stat.where("time>=? and time<=?", (startTime, endTime)) elif query_date == "l7": todayTime = time.strftime( '%Y%m%d00', time.localtime(time.time() - 7 * 86400)) @@ -719,6 +786,8 @@ if __name__ == "__main__": print(setGlobalConf()) elif func == 'get_default_site': print(getDefaultSite()) + elif func == 'get_overview_list': + print(getOverviewList()) elif func == 'get_logs_list': print(getLogsList()) elif func == 'get_logs_error_list': diff --git a/plugins/webstats/js/stats.js b/plugins/webstats/js/stats.js index 95c7f10e1..94f49a50f 100644 --- a/plugins/webstats/js/stats.js +++ b/plugins/webstats/js/stats.js @@ -64,106 +64,309 @@ function wsPostCallbak(method, version, args,callback){ } -function wsOverview(){ - var args = {}; - args['page'] = 1; - args['page_size'] = 10; - args['site'] = 'unset'; - args['tojs'] = 'wsOverview'; - wsPost('get_logs_list', '' ,args, function(rdata){ +function wsOverviewRequest(page){ + + 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"); + } else { + 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'); + console.log(select_option); + + wsPost('get_overview_list', '' ,args, function(rdata){ var rdata = $.parseJSON(rdata.data); - console.log(rdata); var list = ''; var data = rdata.data.data; - for(i in data){ - list += '时间 | \ -域名 | \ -IP | \ -响应 | \ -耗时 | \ -URL | \ -状态/类型 | \ -操作 |
---|
浏览量(PV)?
\ +0
\ +访客量(UV)?
\ +0
\ +IP数?
\ +0
\ +流量?
\ +0
\ +请求?
\ +0
\ +实时流量?
\ +0
\ +每秒请求?
\ +0
\ +