php + redis如何设计一个定时发布功能
程序员文章站
2022-05-15 15:47:31
...
现在想要实现一个定时发布文章的功能,把文章id和发布时间放入redis中
我该怎么设计,在发布时间的时候,把文章的状态改为发布?
回复内容:
现在想要实现一个定时发布文章的功能,把文章id和发布时间放入redis中
我该怎么设计,在发布时间的时候,把文章的状态改为发布?
cron写一个定时执行脚本的命令,脚本主要实现array_shift()
出文章数组的第一个,执行发送该id文章的命令,发送成功则存储shift
之后的数组到redis,失败的话则添加回去。
如果是记录发布时间的话则用array_filter
对时间进行过滤,默认时间是0或者其它,如果时间恒等于默认时间,则为真。然后再获取第一个文章id进行文章发布操作,成功则记录其时间,失败则不更改时间然后存储文章数组到redis中。
用 crontab,每一分钟跑一个 PHP 脚本,这个脚本负责查询是否有需要发布的文章,如果有就发布并且改变状态为已发布。这应该算是一个比较简单的思路了。
状态设置为预发布状态,查询文章时过滤掉发布时间为未来时间文章,预发布状态+发布时间 可以确定文章是已发布的,如果一定要设置发布状态值,可以在查询后判断再更新,如果一定要"定时"那就用 cron
还有一个想法是要发布的文章状态设置成已发布,然后是redis存储文章id,并且设置过期时间为发布时间戳减去当前时间戳的差值,查询文章是过滤redis中的文章id,这样文章到了发布时间就出来了,不过这样做 文章的查询需要封装