系统崩溃时更新可用状态

时间:2010-04-05 14:30:34

标签: php

我正在做一个小应用程序,具有登录功能,

在用户表中保持已记录USER的AVAILABLE状态,

示例:

我有三个用户名为foo1,foo2,foo3,

当foo1登录时,他的可用状态将在USERTU中更新为1,如果他退出,那么他的可用状态将变为0,

喜欢foo2和foo3,

对于这个可用状态flasg,amsimply使用更新操作..没有其他大功能,

现在我想要的是,

如果用户登录时发生了某些事情,那么我想将可用状态设为0,

Somthing意味着,当系统崩溃或浏览器崩溃时,我想将可用状态更改为0

由于 Bharanikumar

4 个答案:

答案 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吗?