我在一个用户放置广告帖子的PHP项目上工作。当广告发布在线时,会给出一个"隐藏日期" (存储在数据库中),当它不再向用户显示时。当"隐藏日期" (例如,下周一上午10:00)我需要触发一个在数据库中进行更改的脚本(与隐藏广告无关)。
问题: 如何在将来的确切时间运行脚本(在"隐藏日期")。
我谷歌很多,并没有找到任何好的解决方案。
找到可能的解决方案:
Cron不再被认为是因为它缺乏准确性(因为我的任务甚至只有几秒钟)。
编写一个守护进程,如果有一个带有"隐藏日期"的记录,它将每秒检查一次。但它可能非常消耗。
另一种方式,因为我被告知消息队列可能有所帮助,但在阅读了一些文档后,我没有找到一种方法来设置在队列中处理消息的日期和时间。
有人能指出去哪儿吗?任何工具/语言都被考虑在内。
答案 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。
但是,它听起来并不是你最好的解决方案。您可以将“隐藏日期”与帖子的其余数据一起存储在数据库中。然后,您只需过滤显示代码中的帖子。