2012-07-12 75 views
1

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

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

什么是最好的方式来做到这一点,我真的需要这两个领域来执行此?

+1

你想让别人为你写脚本吗? – roymustang86 2012-07-12 19:19:26

+0

不是真的,我打算给它一个刺,但想要从不同的角度来看它应该如何完成。我有点难以启动。 – need2nobasis 2012-07-12 19:27:34

回答

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日的时间戳,我们基本上比较:

百万+ 86400 * 2 = < CURRENT_TIMESTAMP

现在,让我们说,今天是7月12日。这意味着7月10日之后是2天(86400 * 2秒)。因此,

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

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

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

+0

这将删除每日记录,但如果用户选择该记录在第二天之后或第三天之后而不是第一天删除,该怎么办? – need2nobasis 2012-07-12 19:26:28

+0

不,这将只删除在给定日期应该删除的记录。 86400代表全天的“unix time”,并作为删除条件(如果TTL = 2,则仅在第2天删除,如果TTL = 3,则仅在第3天删除) – 2012-07-12 19:27:41

+0

我现在明白了,谢谢,但UNIX_TIMESTAMP参考。如果我正在使用current_timestamp属性为'on update current_timestamp',这会起作用吗? – need2nobasis 2012-07-12 19:59:51