![](/img/trans.png)
[英]Loses session/cookies in codeception - how can I stay logged into my site?
[英]How can I update a mysql field when my user loses connection to my site?
当用户断开连接或从我的网站注销时,我想将mysql表字段值更新为“ offline”。 可能吗? 如果是,那怎么办?
不,不可能。
与其使用字段并将其设置为online
和offline
还不如将其设置为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分钟运行一次cron作业,编写CLI程序,这样您就无需发出不必要的HTTP请求。 此CLI程序将扫描包含会话ID的表,您需要在tmp文件夹中搜索该表(session_id带有sess_前缀)。 如果文件存在,则表示用户处于联机状态;如果文件不存在,则表明用户处于脱机状态。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.