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

时间:2012-12-28 06:40:26

标签: php javascript mysql session-state

当用户失去连接或从我的网站注销时,我想将mysql表字段值更新为“offline”。可能吗?如果是,那怎么样?

3 个答案:

答案 0 :(得分:3)

不,这是不可能的。

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

答案 1 :(得分:1)

首先,使用PHP会话,为每个访问者分配一个唯一的随机ID。然后创建一个包含此ID的数据库行,创建ID的时间以及上次在线查看的时间。

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

为了避免溢出,请使用cronjob或使用随机的方式每X次请求或分钟清理一次数据库。

答案 2 :(得分:1)

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

算法如下:

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

    每1分钟运行一次cron作业,编写CLI程序,这样就不需要进行不必要的HTTP请求。 此CLI程序将扫描包含会话ID的表,您需要在 tmp 文件夹中搜索相同的(以sess_为前缀的session_id)。如果文件存在,则意味着用户在线,如果文件不存在,则用户处于脱机状态。

    我希望这有帮助。