Wilddog - 野狗统计
根据业务需求提出的统计代码。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>统计测试</title>
</head>
</head>
<body>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> </script>
<script src="https://cdn.wilddog.com/js/client/current/wilddog.js"></script>
<script type="text/javascript" src="http://www.coding123.net/getip.ashx?js=1"></script>
<script>
// <summary>
// 时间类
// </summary>
Date.prototype.format = function(format){
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/i.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
}
}
return format;
}
// <summary>
// Guid
// </summary>
function newGuid()
{
var guid = "";
for (var i = 1; i <= 32; i++){
var n = Math.floor(Math.random()*16.0).toString(16);
guid += n;
if((i==8)||(i==12)||(i==16)||(i==20))
guid += "-";
}
return guid.replace(/-/g,"");
}
// <summary>
// 全局变量
// </summary>
var data = new Wilddog("https://tongjiwx.wilddogio.com/"); //野狗对象
var Mydate = new Date(); //Date对象
var day = Mydate.format("yyyy年MM月dd日"); //日期
var time = Mydate.toLocaleTimeString(); //当前时间
var times = Mydate.getTime(); //时间戳
var ip = ip.replace("|",""); //ip地址
var PV = 0; //浏览次数
var UV = 0; //独立访客
var guid = newGuid(); //guid
var lock = false; //单向锁(ip群锁)
var lock2 = false; //单项锁(获取pv、uv锁)
// <summary>
// 插入新的ip群
// </summary>
insert = function()
{
//alert(guid);
data.child("IP").child(day).child(guid).set
({
"ip":ip,
"time":time
})
}
// <summary>
// 更新pv次数和uv次数
// </summary>
update = function()
{
data.child("N").child(day).set
({
"PV":PV,
"UV":UV
})
}
// <summary>
// 获取pv次数和uv次数
// </summary>
Get_PVUV = function()
{
data.child("N").child(day).on('value',function(snapshot)
{
if(lock2 == false)
{
lock2 = true;
var json = snapshot.val();
console.log("我是Get_PVUV");console.log(json);
//当天第一次读取的时候,会返回null
if(json == null)
{
PV = 1;
UV = 1;
}
else
{
PV = json.PV;
UV = json.UV;
}
console.log(PV+ "|" +UV);
Get_IPJSON();
}
})
}
// <summary>
// 获取IPJSON
// </summary>
Get_IPJSON = function()
{
data.child("IP").child(day).on('value',function(snapshot)
{
if(lock == false)
{
lock = true; //加上单向锁,只能执行一遍
var jsonstr = JSON.stringify(snapshot.val());
console.log("我是Get_IPJSON");console.log(jsonstr);
if(jsonstr != "null") //当天首次监听则会返回Null,那么直接按照Get_PVUV()的初始化值(pv=1|uv=1)来更新即可
{
if(jsonstr.indexOf(ip) < 0)
{
UV = UV + 1;
}
PV = PV + 1;
}
update();
insert();
}
})
}
// <summary>
// 函数调用区(Main)
// </summary>
Get_PVUV();
</script>
</body>
</html>
Wilddog - 野狗统计的更多相关文章
- Wilddog - 野狗常用知识点
https://www.wilddog.com/examples/chat-var1 https://z.wilddog.com/web/quickstart 增加或者修改替换整条数据(注意,upda ...
- 『原创』手把手教你搭建一个实用的油耗App(一)
前言: 入行快10年,有点积蓄,三年前买了代步车.于是乎,汽车油耗开销就成了每个月都必须关注的问题.三年来,用过了无数油耗记录软件,比如最知名的“小熊油耗”,从第一次用,一直到最新一版,感觉越来越“臃 ...
- Ionic3 Demo
本文为原创文章,转载请标明出处 最近又开源了一个小 Demo,基于 Ionic 3.9.2.注册登录功能使用的是 WildDog 野狗通信云,大家可以放心的注册登录玩.电影相关数据来源自"某 ...
- Ionic3学习笔记(十六)上传头像至图床
本文为原创文章,转载请标明出处 个人做的开源 Demo 登录注册模块采用的是 Wilddog 野狗通讯云的身份认证服务,不得不说各方面和 Google 收购的 Firebase 很像,十分简单易用.其 ...
- 使用野狗(Wilddog)云setValue写入数据
- (void)viewDidLoad { [super viewDidLoad]; //创建野狗实例化对象 用于随时监听数值变化 Wilddog *myRootRef = [[Wilddog all ...
- 基于React,Redux以及wilddog的聊天室简单实现
本文主要是使用ReactJs和Redux来实现一个聊天功能的页面,页面极其简单.使用React时间不长,还是个noob,有不对之处欢迎大家吐槽指正. 还要指出这里没有使用到websocket等技术来实 ...
- spark处理大规模语料库统计词汇
最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...
- TFS 测试用例步骤数据统计
TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...
- java统计字符串单词的个数
在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...
随机推荐
- 中石油-高精度除法-java版
问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec 内存限制: 512 MB提交: 19 解决: 15[提交][状态][讨论版] 题目描述 修罗王聚集了庞大的暗元素以施展隐匿魔法 ...
- codeforces B. Levko and Permutation 解题报告
题目链接:http://codeforces.com/problemset/problem/361/B 题目意思:有n个数,这些数的范围是[1,n],并且每个数都是不相同的.你需要构造一个排列,使得这 ...
- LightOJ 1315 - Game of Hyper Knights(博弈sg函数)
G - Game of Hyper Knights Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & ...
- c# 正则表达式 匹配回车
1 "." 匹配除 "\n" 之外的任何单个字符,一般用".*?"匹配不包括回车的任意字符. 2 我们在用正则表达式分析html或者是xml ...
- innobackupex err
[root@12db etc]# innobackupex --user=root /dbback/ InnoDB Backup Utility v1.5.1-xtrabackup; Copyrigh ...
- CSS优化技巧
CSS是页面效果呈现中非常重要的组成部分,它包括颜色.大小尺寸.背景和字体等.写CSS很简单很容易,但是要想写出精炼的CSS代码还是有很多技巧的. 下面就是技巧7则: . 合并多个相同属性: 比如很多 ...
- Ninja - chromium核心构建工具
转自:http://guiquanz.me/2014/07/28/a_intro_to_Ninja/ Ninja - chromium核心构建工具Jul 28, 2014 [在线编辑] 缘由 经过上次 ...
- WCF例子
WCF入门简单教程(图文) VS2010版 http://hi.baidu.com/grayworm/item/5bb61792fec5b54af142159f http://hi.baidu.com ...
- C++的那些事:类的拷贝控制
1,什么是类的拷贝控制 当我们定义一个类的时候,为了让我们定义的类类型像内置类型(char,int,double等)一样好用,我们通常需要考下面几件事: Q1:用这个类的对象去初始化另一个同类型的对象 ...
- Windbg 双机代码同步调试设置
Windbg的设置 Windbg的设置 Windbg本身可以直接从微软的网站上下载下载地址:http://www.microsoft.com/whdc/devtools/debugging/defau ...