在将来的确切时间执行脚本

时间:2014-10-26 20:51:07

标签: php background cron message-queue future

我在一个用户放置广告帖子的PHP项目上工作。当广告发布在线时,会给出一个"隐藏日期" (存储在数据库中),当它不再向用户显示时。当"隐藏日期" (例如,下周一上午10:00)我需要触发一个在数据库中进行更改的脚本(与隐藏广告无关)。

问题: 如何在将来的确切时间运行脚本(在"隐藏日期")。

我谷歌很多,并没有找到任何好的解决方案。

找到可能的解决方案:

  • Cron不再被认为是因为它缺乏准确性(因为我的任务甚至只有几秒钟)。

  • 编写一个守护进程,如果有一个带有"隐藏日期"的记录,它将每秒检查一次。但它可能非常消耗。

  • 另一种方式,因为我被告知消息队列可能有所帮助,但在阅读了一些文档后,我没有找到一种方法来设置在队列中处理消息的日期和时间。

有人能指出去哪儿吗?任何工具/语言都被考虑在内。

2 个答案:

答案 0 :(得分:0)

我们假设广告显示直到一周之后 在广告表中创建一个名为expiry_date(timestamp)的字段 插入新广告后,请执行以下操作

$expiry_date = strtotime("+ 7 days");

然后插入失效日期和记录
接下来,在显示广告的页面中,仅选择有效期尚未过去的广告,所以

SELECT * FROM ads WHERE expiry_date >= NOW()

这只会展示尚未过期的广告。

答案 1 :(得分:0)

如果您的网站在Linux服务器上运行,您可以添加cron job来触发更新脚本。

如果您的网站正在运行Windows,请改用Task Scheduler

但是,它听起来并不是你最好的解决方案。您可以将“隐藏日期”与帖子的其余数据一起存储在数据库中。然后,您只需过滤显示代码中的帖子。