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,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...
随机推荐
- web开发中目录路径问题的解决
web开发当中,目录路径的书写是再常用不过了,一般情况下不会出什么问题,但是有些时候出现了问题却一直感到奇怪,所以这里记录一下,彻底解决web开发中路径的问题,开发分为前端和服务端,那么就从这两个方面 ...
- Greedy:三角形问题
题目大意:有n根长度的为a1,a2....an的棒子,如果棒子可以组成三角形,求这些棒子能组成的三角形的最大周长? 这一题,一般人只能想到三重循环,当然我们是CS专业的,不能这样想,其实这题可以用DP ...
- python基础——使用list和tuple
python基础——使用list和tuple list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用 ...
- Linux内核同步机制之(二):Per-CPU变量
转自:http://www.wowotech.net/linux_kenrel/per-cpu.html 一.源由:为何引入Per-CPU变量? 1.lock bus带来的性能问题 在ARM平台上,A ...
- hdu 4185 二分图匹配
题意用1*2的木板覆盖矩阵中的‘#’,(木板要覆盖的只能是‘#’),问最多能用几个木板覆盖 将#抽象为二分图的点,一个木板就是一个匹配,注意最后结果要除以2 Sample Input 1 6 .... ...
- android wheelview 滚轮控件
项目地址:http://android-wheel.googlecode.com/svn
- 【转】Hadoop集群添加磁盘步骤
转自:http://blog.csdn.net/huyuxiang999/article/details/17691405 一.实验环境 : 1.硬件:3台DELL服务器,CPU:2.27GHz*16 ...
- linux全部命令
linux全部命令 一.安装和登陆命令1.进入图形界面startx 2.进入图形界面init 5 3.进入字符界面init 3 4.登陆login 5.关机poweroff-p 关闭机器的时候关闭电源 ...
- XMLHTTPRequest对象
1.用于在后台与服务器交换数据: 2.XMLHttpRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页.当页面全部加载完毕后,客户端通过该对象向服务器请求数据, 服务器端接受数据 ...
- Unity3D脚本18:可视化辅助设置类 Gizmos
Gizmos 类 Gizmos用于场景中给出一个可视化的调试或辅助设置. 所有的Gizmos绘制都必须在脚本的OnDrawGizmos或OnDrawGizmosSelected函数中完成. OnD ...