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,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...
随机推荐
- Hadoop中操作HDFS出现异常的解决方法
Hadoop环境搭建成功后,一般会运行一个小例子,这时候就涉及到了对HDFS文件系统的操作,对于刚开始学习Hadoop的初学者一般会多次的进行name节点的格式化操作,最后导致上传文件会抛出异常,通过 ...
- 桐桐的贸易--WA
问题 A: 桐桐的贸易 时间限制: 1 Sec 内存限制: 64 MB提交: 15 解决: 2[提交][状态][讨论版] 题目描述 桐桐家在Allianceance城,好友ROBIN家在Horde ...
- 【linux】awk的使用
教程来自:http://www.runoob.com/linux/linux-comm-awk.html 教程中的例子很好,可以有助于快速上手awk.但是里面的细节介绍的并不清楚. 问题1:什么时候写 ...
- 【USACO】namenum
//开始傻×了 受题目形容的误导 一心想生成所有可能的 字符串组合 之后查找非常慢 //听了同学的 将5000个dict里的字符串 转换成char型数组(不能直接用int 会越界)直接用输入的数据对着 ...
- UVALive 7040 Color (容斥原理+逆元+组合数+费马小定理+快速幂)
题目:传送门. 题意:t组数据,每组给定n,m,k.有n个格子,m种颜色,要求把每个格子涂上颜色且正好适用k种颜色且相邻的格子颜色不同,求一共有多少种方案,结果对1e9+7取余. 题解: 首先可以将m ...
- hadoop启动后jps没有namenode(转)
hadoop启动后jps没有namenode 一般都是由于两次或两次以上格式化NameNode造成的,有两种方法可以解决: 1.删除DataNode的所有资料 2.修改每个DataNode的names ...
- .net学习笔记----Asp.net的生命周期之一应用程序生命周期
Http请求刚刚到达服务器的时候 当服务器接收到一个 Http请求的时候,IIS (Internet Information Services,互联网信息服务)首先需要决定如何去处理这个请求. 什么是 ...
- SQL的IN, SOME,ANY,IN
表dbo.Student有12条数据 name 123123123123123123123123123123123123大雄1阿华浩然菊花大姐123123 1.some,any用法一样(不知道有没有其 ...
- js 使用json.js处理json对象
使用参考代码: <script src="json/json2.js"></script> <script type="text/javas ...
- HTML CSS 中DIV内容居中汇总
转载博客(http://www.cnblogs.com/dearxinli/p/3865099.html) (备注:DIV居中情况,网上谈到也比较多,但是这篇文字,相对还是挺全面,现转载,如果冒犯,还 ...