轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 PHPwind专区 查看主题

phpwind8.X 任务中心改为每日零点重置任务的方法

发布者: longmei | 发布时间: 2018-4-21 11:02| 查看数: 4064| 评论数: 1|帖子模式

【免责声明】
个人研究仅供学习交流参考,涉及修改文件,请大家修改前做好备份工作~
谢谢~楼楼也是新手,担当不起这个责任哒~~

PW9 表示我还没研究过哦。。。因为自己的小站是8.7的 暂无升级打算
所以我给出的这个方案是针对PW8.X的~
PW9文件结构全变了。。还没学习~抱歉哈
等我学习了PW9再给出PW9的修改方法吧~
原理和SQL语句都在下面了,希望了解PW9结构的大神指导我一下~

想看原理啥的就看下面这段话吧。没兴趣的直接跳过本段看下文红字以下的修改方法即可~
相信很多站长朋友都有这方面需求
想开展每日任务,但是PW8.X的只能设置任务周期(24小时),如果某用户碰巧是晚上首次接任务,那么第二天他白天想做这个任务就会接不了的~如果能设置为每日零点自动重置任务,就能让24小时任务变成真正的每日任务哦~

先说一下原理,数据表 pw_jober 用于存放用户的任务完成记录。字段 next 会在用户每次接周期任务后自动更新为当前时间戳加上周期时间戳。用户再次接这个任务的时候会进行判定,如果当前时间戳小于这个next 时间戳,就会提醒用户时间还没到。

我们要实现24小时周期任务在零点时候重置,其实就是检查一下这个next时间戳,如果这个next处于今天的0:00~明天的0:00之间,说明这个任务是昨天完成,今天还没完成过(如果今天也完成过那么next时间戳一定是明天的~)

当用户访问任务中心时我们做一下这个检查,如果发现这样的时间戳,那么就把这个next 赋值为当天0:00的时间戳,这样用户就可以马上接这个任务了!接完这个任务后,next时间戳被设置到明天,不在我们的判定范围内,于是今天这个任务就不会再被触发!


注:使用该代码后,每天的0:00会把来访用户今天到期的周期任务重置。如7天周期任务,会在第七天实现0:00任务重置。但是不会实现每周一重置任务哦~~30天周期任务也是~ 当然我原理已给出了,如果想做成每周任务或者每月任务 按这个思路写代码重置即可。比如判断下今天是不是周一、是不是每月的1号等等。

当然,如果你用后台计划任务,每天零点重置所有用户的next也是可以的。这里不对这种方法多做介绍了。

转载请注明来自  代码编写:百里叶子酱

具体实现方法如下:(PW8.X)

1、打开PW8.X论坛根目录,找到 jobcenter.php 编辑。
2、找到代码:
  1. !$winduid && Showmsg('not_login');
复制代码
在这行代码的下方加入以下代码:
  1. global $tdtime; //引用今日时间戳全局变量
  2. $tmtime=$tdtime + 86400; //计算出明天0:00的时间戳
  3. $Tquery = $db->update("update pw_jober set next='$tdtime' where userid='$winduid' and next > '$tdtime' and next < '$tmtime'"); //把数据库中当前用户符合今日时间戳区域的记录找出并更新
复制代码
3、 保存文件,上传更新(注意备份原文件!小心驶得万年船~出错别赖我= =),OK。

最新评论

伤感男孩 发表于 2022-6-10 15:24
php网页游戏源码

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表