关于网友提出的“ 每日签到功能怎么实现的?”问题疑问,本网通过在网上对“ 每日签到功能怎么实现的?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 每日签到功能怎么实现的?描述:
怎么知道一个时间戳是不是新的一天呢 怎么让签到过的灰色按钮过了0点再变回绿色呢?
解决方案1:
签到记录表每次签到存一条数据 用户表添加字段最后签到时间 要判断就直接在用用户表的最后签到时间做判断.
解决方案2:
个人建议: 1.利用redis 做一个签到日志,用户的标识为key 签到时间为值 存储 2.判断的时候直接去redis中获取 如果有 这按钮是 变灰 3.然后跑一个计划任务,每天0点的时候,把redis中 一天的数据 同步到 数据库记录表中,然后清空 redis中的记录
解决方案3:
判断某天有没有签过的还不简单, 数据库查询某天(00:00-23:59)有没有签到数据就行啊 有就置灰,没有就变绿色。
//伪代码
$signTime = time();//任意时间戳
$startTime = mktime(0,0,0,date("d",$signTime),date("m",$signTime),date("Y",$signTime));
$endTime = mktime(23,59,59,date("d",$signTime),date("m",$signTime),date("Y",$signTime));
//查询签到数据
if(Model('签到表')->whereBetween('签到时间',[$startTime,$endTime])->get())
{
//置灰
$hasSigned = true;
}
else
{
//绿色
$hasSigned = false;
}