Heim  >  Artikel  >  Backend-Entwicklung  >  php + redis如何设计一个定时发布功能

php + redis如何设计一个定时发布功能

WBOY
WBOYOriginal
2016-06-06 20:41:111363Durchsuche

现在想要实现一个定时发布文章的功能,把文章id和发布时间放入redis中

我该怎么设计,在发布时间的时候,把文章的状态改为发布?

回复内容:

现在想要实现一个定时发布文章的功能,把文章id和发布时间放入redis中

我该怎么设计,在发布时间的时候,把文章的状态改为发布?

cron写一个定时执行脚本的命令,脚本主要实现array_shift()出文章数组的第一个,执行发送该id文章的命令,发送成功则存储shift之后的数组到redis,失败的话则添加回去。

如果是记录发布时间的话则用array_filter对时间进行过滤,默认时间是0或者其它,如果时间恒等于默认时间,则为真。然后再获取第一个文章id进行文章发布操作,成功则记录其时间,失败则不更改时间然后存储文章数组到redis中。

用 crontab,每一分钟跑一个 PHP 脚本,这个脚本负责查询是否有需要发布的文章,如果有就发布并且改变状态为已发布。这应该算是一个比较简单的思路了。

状态设置为预发布状态,查询文章时过滤掉发布时间为未来时间文章,预发布状态+发布时间 可以确定文章是已发布的,如果一定要设置发布状态值,可以在查询后判断再更新,如果一定要"定时"那就用 cron

还有一个想法是要发布的文章状态设置成已发布,然后是redis存储文章id,并且设置过期时间为发布时间戳减去当前时间戳的差值,查询文章是过滤redis中的文章id,这样文章到了发布时间就出来了,不过这样做 文章的查询需要封装

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn