1

我在 sql 数据库中有一个字段,称为time_stamp将记录添加到数据库时的时间戳。我有另一个名为“TTL”的字段,其中将存储 1、2 或 3(该字段中的每个数字代表一天)。我可以有一个 php 脚本,其中记录的删除由“TTL”字段确定吗?

例如,今天中午添加了一条记录,“TTL”为 2,我可以有一个脚本在两天后的中午删除同一条记录吗?

执行此操作的最佳方法是什么,我真的需要这两个字段来执行此操作吗?

4

1 回答 1

1

运行此脚本的最佳方法是将其附加到cron并使其在给定的时间间隔内运行。

然后,为了对记录删除进行编程,您需要运行以下查询:

DELETE FROM records WHERE UNIX_TIMESTAMP(time_stamp) + TTL * 86400 <= CURRENT_TIMESTAMP()

time_stamp是您的创纪录价值 - 假设它等于 1000000。86400 是一天中的秒数。是您希望删除文件TTL之后的天数。time_stamp所以如果TTL是 2 并且 1000000 是 7 月 10 日的时间戳,我们基本上是在比较:

1000000 + 86400 * 2 <= CURRENT_TIMESTAMP

现在,假设今天是 7 月 12 日。这意味着它是 7 月 10 日之后的 2 天(86400 * 2 秒)。因此,

CURRENT_TIMESTAMP = July 10th timestamp + 2 days worth of seconds
                  = 1000000 + 86400 * 2

这意味着CURRENT_TIMESTAMP >= 1000000 + 86400 * 2在 7 月 12 日期间和之后的所有时间点,因此删除了记录。

这将在您的服务器运行时每天为您删除记录。享受和好运!

于 2012-07-12T19:21:54.190 回答