功能:统计当日登陆玩家数
要求:一名用户当日多次登陆只算一次
解析:
用户表新增字段loginTime int(10) not null
新增统计表:
CREATE TABLE `mnlm_nums` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`cname` varchar(10) NOT NULL DEFAULT '' COMMENT '统计名称year month day',
`nums` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '统计数',
`dates` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '统计日期',
PRIMARY KEY (`id`),
UNIQUE KEY `cname` (`cname`,`dates`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
用户登陆 读取loginTime获得上次登陆时间戳
声明变量$day = strtotime(date('Y-m-d')) 获得当日零点时间戳
判断loginTime是否小于$day
如果小于则表示今天新登陆用户则字段nums自增1
一、 mysql直接写就是 insert....ON DUPLICATE KEY UPDATE `nums`=(nums+1)
二、由于用的是ThinkPhp框架,寻找手册是否有类似方法,手册没有详细描述,查看源码,主要设计两个文件:
1. thinkphp/library/db/driver.class.php insert()方法
2. thinkphp/library/db/driver/mysql.class.php parseDuplicate()方法
得出结论
add($data,array(),array('nums'=>array('exp','nums+1')));
最后更新用户的loginTime完成