我正在做一个小应用程序,具有登录功能,
在用户表中保持已记录USER的AVAILABLE状态,
示例:
我有三个用户名为foo1,foo2,foo3,
当foo1登录时,他的可用状态将在USERTU中更新为1,如果他退出,那么他的可用状态将变为0,
喜欢foo2和foo3,
对于这个可用状态flasg,amsimply使用更新操作..没有其他大功能,
现在我想要的是,
如果用户登录时发生了某些事情,那么我想将可用状态设为0,
Somthing意味着,当系统崩溃或浏览器崩溃时,我想将可用状态更改为0
由于 Bharanikumar
答案 0 :(得分:1)
你需要一个心跳。这可能是在客户端计算机上运行的(可能是jscript),它会定期向服务器发送一条简单的消息。当服务器收到消息时,它会重置上次收到该用户的时间。服务器中的线程定期在用户表中运行,并检查心跳超时。如果任何用户在超时期限内没有心跳,则会被注销。
答案 1 :(得分:1)
你可以在你的代码上使用try-catch块/所以 - 在主程序输入点你可以插入try块并在最后 - 捕获异常
try
{
// include main files with functionality
}
catch ( Exception $e )
{
// here you can log the exception text $e->getText()
// take current user ID and set his status
setStatus($_SESSION['user_id']);
}
答案 2 :(得分:0)
由于在系统崩溃后您无法完成大量工作,因此您似乎必须定期更新表,并跟踪更新发生的时间。并有另一个进程监视上次更新的时间。如果记录未在一定时间内更新且用户仍处于活动状态,则会话或系统由于某种原因已断开连接。我的建议是跟踪最后一次,而不仅仅是使用布尔值的Available_Status字段。
答案 3 :(得分:0)
我不确定您是否能够判断浏览器是否已崩溃。你可以在后台运行一个php脚本(调用php的批处理文件)来测试该站点是否处于活动状态,如果脚本停止则将用户更改为0。但是如果脚本停止了,你还能访问数据库/ php吗?