我如何更新mysql字段时,我的用户失去连接到我的网站


How can I update a mysql field when my user loses connection to my site?

我想更新一个mysql表字段值为"脱机"当用户失去连接或从我的网站注销。这可能吗?如果是,那么是怎么做的?

不可能。

与其使用一个字段并将其设置为onlineoffline,不如将其设置为INT字段。每次用户与您的网站交互时,只需用当前时间戳($_SERVER['REQUEST_TIME'])更新字段。使用该字段,您可以通过查看用户活动了多长时间来推断用户的状态(例如<=30min为在线,而>30min为离线)。

首先,使用PHP会话,为每个访问者分配一个唯一的随机ID。然后创建一个DB行,其中包含这个ID、创建ID的时间和最后一次在线看到ID的时间。

然后,每隔60秒左右,使用jQuery的.load()从服务器加载一个PHP脚本,该脚本只更新mysql数据库中的lastrongeen字段。工作。

为避免溢出,请执行cronjob,或使用随机方法,每X个请求或每分钟清理一次数据库。

使用PHP Session会有帮助。每当用户登录时,在数据库字段中更新PHP的session_id(),众所周知,PHP将会话数据存储在tmp文件夹中。您可以使用cron job扫描此文件夹以查找活动会话。通常会话文件看起来像sess_session_id()。

算法如下

  1. 用户登录
  2. 在数据库中更新会话值
  3. 更新登录状态为OnLine

每1分钟运行一次cron作业,编写CLI程序,这样你就不需要进行不必要的HTTP请求。这个命令行程序将扫描包含会话id的表,您需要在tmp文件夹中搜索相同的(session_id前缀为sess_)。如果文件存在,则用户在线;如果文件不存在,则用户离线。