30分钟后从数据库中删除项目

时间:2013-12-17 08:08:40

标签: php mysql

您好我试图在Google上找到我的问题的答案,但我不能......我的意思是我可以找到答案,我不能做我想做的事情......

我想要一个脚本,它计算我网站上有多少用户在线,但是这个脚本应该计算访客数,所以我创建了一个会话数据库,这个脚本为用户提供了一个ID并设置了30分钟的会话,以及现在我有一个问题,因为如果他不活动超过30分钟,他应该从数据库中删除,因为我想通过ID计算有多少用户在线,我很头疼我怎么能这样做。

有一种简单的方法吗?

对不起我的英语,但我希望你明白我的意思。

2 个答案:

答案 0 :(得分:6)

正如Barmar在their answer here中所述:

DELETE FROM my_table
WHERE timestamp < NOW() - INTERVAL 30 MINUTE
     

编写执行此SQL的PHP​​脚本,并添加crontab条目   每30分钟运行一次。或者使用MySQL Event Scheduler运行   它定期;它被描述为here

答案 1 :(得分:0)

由于您没有特别提及任何数据库,因此我将大致介绍如何实现它:

你可以有一个这样的表:

USER_SESSIONS
(
  USER_ID //UNIQUE_ID
  LAST_ACTIVE //TIMESTAMP
)

以下是您可以关联以实现会话的功能:

  1. 当用户登录时,您在此表中创建一个条目。
  2. 当用户注销时,您将从此表中删除相应的条目。
  3. 当用户执行某些活动时(取决于您希望如何跟踪前端的活动),请更新用户的相应TIMESTAMP。
  4. 创建监视TIMESTAMP列的数据库计划(持续运行的进程)。所有好的数据库都有内置的调度程序。以下是调度程序的一些伪代码
  5. FOR each entry in USER_SESSIONS
     If (CURRENT_TIMESTAMP - LAST_ACTIVE) > [30 mins]  then
        delete the entry of the corresponding user from this table.
        //This will essentially cause a session timeout.
     End If
    LOOP;

    我希望你对如何实现它有一个很好的了解。

    快乐编码:)