【问题标题】:php - how to store expiry date in a database and run a (delete) script at datephp - 如何将到期日期存储在数据库中并在日期运行(删除)脚本
【发布时间】:2012-10-03 04:50:14
【问题描述】:

我有一个简单的网站,用户可以在其中发布广告,我想在用户上传广告时在 mysql 表中设置到期日期,比如一个月后,然后当达到该日期时,我的删除脚本将自动运行以移除广告

非常感谢任何帮助!

【问题讨论】:

  • 不删除它们但选择不显示它们可能是值得的,您可能需要\需要过去添加的记录。在这种情况下,您将在选择 SELECT ... WHERE expires_on 或 SELECT ... WHERE ( added_on + interval 1 MONTH)
  • 感谢您的回复,我会带上这个!知道如何从 mysql 查询中隐藏它们吗?

标签: php mysql date cron


【解决方案1】:

添加脚本:

INSERT INTO ads (expires_on, ...)
VALUES (now() + INTERVAL 1 MONTH, ...) 

删除脚本:

SELECT ...
WHERE expires_on <= now()

只需让您的删除脚本每天运行一次(例如 cron 作业)

【讨论】:

  • 感谢您的回复,您能否进一步解释一下广告在到期日是如何被删除的?
  • 这取决于你,我只是展示你如何编写查询代码来获取应该删除的广告。
【解决方案2】:
  1. 编写一个脚本,查询数据库并根据创建广告时设置的时间戳删除/标记任何过期的广告。
  2. 从设置为每晚运行的 cron 作业中调用此脚本。

更好的是,如果数据集很小,请忽略主代码中的过期广告,而不是完全删除它们。

【讨论】:

  • 谢谢你的回复,这个很有用,会考虑忽略过期广告!
  • 不要删除它们 - 只需在过期日期过后将它们标记为无效。这样,您就可以提供历史信息等。
【解决方案3】:

添加查询:

INSERT INTO ads (expires_on, ...)
VALUES (now() + INTERVAL 1 MONTH, ...) 

删除查询:

DELETE from ads 
WHERE expires_on <= now()

就像其他人提到的那样,在 cron 作业中运行它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多