想撸一个 “定时提醒” 的接口,请教 “重复提醒” 的实现思路

2014-12-02 09:06:43 +08:00
 abelyao
最近申请了一个微信企业号,发现很适合做一个定时提醒的功能,消息上限足够用,提醒也有声音。

目前的思路是,在 SAE 上搞个定时器,每分钟或半分钟,检查数据库中有没有要发送的消息,那就可以实现定时提醒了。

那么问题来了,如果要做 “重复提醒” 的功能,可选 每天提醒/每周提醒/每月提醒/每年提醒 这样的重复提醒,数据库 和 定时器 上要怎么设计,比较合适呢?

麻烦有经验的前辈,不吝赐教,谢谢!
4437 次点击
所在节点    问与答
24 条回复
robbielj
2014-12-02 09:27:17 +08:00
不就是cron能完成的事么?
abelyao
2014-12-02 09:28:58 +08:00
@robbielj 动态添加提醒数据哦,难道每一条提醒都增加一条 cron 记录?
mkeith
2014-12-02 09:37:39 +08:00
你是怎么申请到的啊?
fooevr
2014-12-02 09:37:52 +08:00
node有个later
abelyao
2014-12-02 09:44:55 +08:00
@mkeith 如果不想自己出材料的话 可以到淘宝上找人弄一个咯,20元不到,不过建议只用做测试,以免以后要补充什么资料,就麻烦了。
abelyao
2014-12-02 09:45:57 +08:00
@fooevr 呃,我用 PHP 在做了,难道要换 node …
kslr
2014-12-02 10:34:04 +08:00
模拟cron如何,规则就抄cron这样写,再写个解析该规则的。
jybox
2014-12-02 11:09:06 +08:00
abelyao
2014-12-02 11:16:31 +08:00
@jybox 这个… 好复杂的样子
abelyao
2014-12-02 11:18:44 +08:00
@kslr 感觉应该不需要这么复杂吧,比如 iPhone 自带的 “提醒事项” 里面有一个选项是 “重复”,默认是只提醒一次,当有设定重复的时候,才会多次提醒,这个难道也要设计得很复杂吗
holystrike
2014-12-02 11:24:00 +08:00
可以每次提醒的时候预先算好下次应该提醒的时间

如果取消了,就删除预算提醒项
knightlhs
2014-12-02 11:27:02 +08:00
SAE 本身就支持 cron 的计划任务 关键是你后面的逻辑打算怎么处理
knightlhs
2014-12-02 11:28:08 +08:00
你可以考虑通过 SAE 的 cron 调度最小检查时间 比如每分钟
然后去看数据库是否有匹配数据 如果有 发提醒 如果没有 就返回 等待下一轮
abelyao
2014-12-02 11:29:42 +08:00
@knightlhs
我知道 SAE 支持 cron,我也是打算用 cron 来取出需要发送的消息。
但是总不能只要有一条提醒,就往 cron 里插入一行吧,所以重复提醒这部分还是得由程序来实现,现在就是头疼怎么实现比较合理,并且不会太耗资源。
abelyao
2014-12-02 11:30:47 +08:00
@holystrike 就是说,如果这条提醒,是需要重复提醒的,那么每次提醒完,顺便 copy 一份到下一个提醒时间吗?好像也是一个不错的思路
knightlhs
2014-12-02 11:36:13 +08:00
@abelyao 我的意思是 用 cron 来触发你的 查询接口 接口去查询数据库看看有没有符合条件的数据
不是说 每增加一个任务就增加一个 cron
jianghu52
2014-12-02 11:36:33 +08:00
我是个初级码农,所以我觉得这个好像就是一个flg的事情。不知道是不是我想的太简单了。
没有重复的loop_flg=0,重复一个月的loop_flg=1,依次类推
每过1分钟,读取数据库,当发现有loop_flg = 1的数据的时候,直接计算当前时间与当时设定时间的差就应该可以了。(月份的话其实更简单,要求不高的话就直接去日,要求精确30天的话还得另外算,日,星期,年都可以计算的)

换句话说 就是直接在代码里面多加几个方法,用以处理数据库里面多了loop-flg的数据。

以上。
abelyao
2014-12-02 11:47:28 +08:00
@knightlhs 你说的这个我已经在帖子的内容里面说了,就是要这样做,现在的问题是,需要多次触发的重复提醒,要怎么设计怎么实现,比较好
abelyao
2014-12-02 11:51:46 +08:00
@jianghu52 我在主贴 APPEND 了一个思路,是看你这个回帖的时候想到的,谢谢!
dongbeta
2014-12-02 11:52:38 +08:00
微信有这个自带功能吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/150818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX