我使用PHP作为服务器端语言,使用Flex作为前端。在我的应用程序中,有不同级别的用户。根据运营商的在线状态,QC在线分配一些工作。我只是想在他自动关闭浏览器时更新用户的在线/离线状态。 Flex调用PHP服务,但没有得到任何响应。 DB(MySQL)没有得到更新。任何帮助表示赞赏。
答案 0 :(得分:7)
据我所知,这是不可能的。您最好的选择是在用户登录时将datetime
保存在数据库中,然后运行AJAX脚本以在数据库中每分钟更新该用户的时间。然后,您可以检查用户是否有一分钟datetime
来查看用户是否已登录。您可以调整此方法的“分辨率”...例如每5分钟检查一次。
答案 1 :(得分:0)
如果您想在浏览器关闭之前进行服务调用,我认为您需要让Javascript向您的flex / flash客户端发送消息,然后让flex进行服务调用以让您的服务器知道客户端/浏览器正在关闭。一旦服务调用(请求/发布)成功,Flash客户端将响应Javascript以继续关闭浏览器。请注意,我不认为你可以从浏览器到浏览器一直有javascript阻止。浏览器可以在闪存之前关闭以启动服务呼叫。祝你好运。
顺便说一句,你可以使用ExternalInterface注册一个回调监听器,并使用回调监听器中引用的javascript函数使用javascript信号Flex。
答案 2 :(得分:0)
谢谢大家。我对AJAX很困惑,但最后还是完成了。我正在关闭浏览器时调用一个函数。 <body onunload='Logout();'>
。这是函数
var xmlhttp = new XMLHttpRequest();
url = "http://*****.com/public/LogOutThruJS.php?UserID="+UserID+"&LogHistoryId="+LogHistoryId;
function Logout()
{
xmlhttp.open("GET", url,false);
xmlhttp.send(null);
xmlhttp=null;
delete xmlhttp;
我希望它明白:)。
}