我正在开发一个基于客户端服务器的应用程序。我想限制 登录我的应用程序的用户数。 我的第一种方法是创建一个表(称之为“X”)来存储用户ID,机器名称,IP .. 每个成功登录到应用程序的用户 在每次登录时,我检查表“X”中的行数,如果等于限制 然后我提醒用户,如果不是我将新记录添加到表“X”,存储 当前行作为静态对象中的对象。 当用户注销时,我删除与保存的静态对象关联的记录。 我正在调用删除formclosing事件中的记录的函数,这工作正常,但唯一的问题是,如果我按“结束任务”或“结束进程”或任何其他异常操作,记录将保留在表中。 在这种情况下你有什么建议?
答案 0 :(得分:1)
最好的方法是创建与服务器的长寿命tcp连接并检测它何时关闭 - 它会以任何原因从应用程序终止到网络发生故障。
如果您的服务器技术不允许创建此类连接。您应该定期从客户端向服务器发送“我活着”的数据包。如果超出某些超时,请将此类客户端标记为已断开连接。
答案 1 :(得分:0)
我遇到了类似的困境,我决定永远保留缓存/数据库中的所有内容。 我的解决方案是我限制了缓存大小...(你可以在下面找到我的代码)
function getTable($sql_query)
{
$conn=connectDB();
$query_result = $conn->query($sql_query);
if(!$query_result)
{
$conn->close();
die("MySQL error ");
}
$result = array();
while($result[] = $query_result->fetch_assoc());
$conn->close();
return $result;
}
如果这种方法对您不起作用,那么您可以依赖实际的连接断开事件或超时。
答案 2 :(得分:0)
谢谢你们的建议。在进一步讨论了这个问题之后 团队,我决定在用户登录,传递时运行一个小的后台应用程序 正确的参数和这个应用程序将为我做所有的检查。