我有一个php脚本,应该在每次让我们说15分钟后删除数据库中的数据。
现在在数据库表中,我有一个字段时间戳,每次修改字段时都会存储当前时间戳。
每15分钟后我想检查当前时间与存储在时间戳字段中的值之间的差异。
我尝试if((time()-$row['timestamp'])>900)
//(900是秒)
这是因为时间戳字段还存储日期和当前时间。 我该怎么办
答案 0 :(得分:3)
如果使用MySQL TIMESTAMP
数据类型存储时间,那么最好的方法是使用对TIMESTAMP
数据进行操作的MySQL函数。 TIMESTAMPDIFF()
非常合适,因为它还允许为结果定义单位。
SELECT TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) FROM `my_table`
将返回自my_timestamp_column
值以来经过的分钟数(整数)。将它与PHP cron脚本或简单地与页面上的每个请求相结合即可实现目标:
DELETE FROM `my_table`
WHERE TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) > 15
此外,您可能需要阅读手册的Date and Time Functions部分以了解其他一些解决方案。
答案 1 :(得分:2)
使用数据库完全处理这个是最容易的。使用CURR_TIME获取当前时间戳,然后使用TIMEDIFF()生成条件
答案 2 :(得分:2)
您已经提到$row['timestamp']
以datetime
格式存储值。因此要将其转换为时间戳,请使用strtotime()
函数。所以现在你的代码将是,
if((time()-strtotime($row['timestamp']))>900) //( 900 is the seconds)
我希望这会有所帮助
答案 3 :(得分:2)
您也可以使用SQL执行此操作:
DELETE FROM `table` WHERE `timestamp` < UNIX_TIMESTAMP() - 60 * 15