繁体   English   中英

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

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

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

不,不可能。

与其使用字段并将其设置为onlineoffline还不如将其设置为INT字段。 每次用户与您的网站进行交互时,只需使用当前时间戳( $_SERVER['REQUEST_TIME'] )更新该字段。 然后,您可以使用该字段查看用户活跃状态以来的状态(例如,<= 30min处于在线状态,> 30min处于离线状态)来推断用户的状态。

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

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

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

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

该算法如下

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

每1分钟运行一次cron作业,编写CLI程序,这样您就无需发出不必要的HTTP请求。 此CLI程序将扫描包含会话ID的表,您需要在tmp文件夹中搜索该表(session_id带有sess_前缀)。 如果文件存在,则表示用户处于联机状态;如果文件不存在,则表明用户处于脱机状态。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM