2013-08-03 227 views
-1

我需要在数据库中执行MySQL查询当用户关闭他的browser.i正在开发,其中当数据库字段LO-gin_status用户登录被设置为一个应用程序后,执行数据库查询1,并且当用户注销他的lo-gin_status时,它被设置为0.但是如果用户登录但不注销,他应该怎么做才会关闭他的浏览器。关闭浏览器(PHP)

+0

有没有办法让这样的事情适用于所有情况。你冷漠的是看看[卸载](http://api.jquery.com/unload/)事件。但是如果浏览器崩溃怎么办?此外,还有很多问题与您的问题完全相同或非常相似。 – AmazingDreams

回答

0

你可以使用一个类似的事件向onunload事件发送到您的服务器,但你不能确定这一事件将始终发送。我个人认为最好跟踪用户活跃的最后一刻,并根据最后一次活动时间戳确定他是否在线。这取决于你的网站这个最大超时应该多长时间。

1

有没有办法在浏览器关闭,以可靠地检测。因此,当浏览器关闭时,您无法可靠地操作数据库。因此,对于未检测到浏览器关闭的情况,您需要采取一些解决方法。使这种解决方法成为浏览器关闭时执行您想要执行的任何操作的首选方法,并放弃在浏览器关闭时需要执行某些操作的要求。

1

试试这个

$(window).unload(function() { alert("AJAX function to do the required job"); }); 
0

,如果你遇到了麻烦真的有尝试这种方式!在您的应用程序的每个(e.g. 5 minutes)为登录用户

`live_last_update` TIMESTAMP NULL DEFAULT NULL 

更新领域current timestamp

用户表中添加列等。如果用户注销手动设置为null。 它表示用户在线或不在线。

使用cron job脚本,不必安排在后台运行任务的能力! 因为你没有访问会话在cron作业(Why?),写脚本,检查live_last_update领域中的所有用户的记录,其中在最后5 minutes未更新的领域。所以你知道哪些用户没有注销。如果需要,可以设置null

设置cron job执行特殊时期。

这里是一个很好的教程如何使用cron作业:

http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/

0

为什么不能有一个Ajax请求每x秒。如果您在3秒内没有收到来自浏览器的消息,那么您是否需要清理表冠工作?

确保你已经听到了AJAX调用回至少一次,其他明智的您将登录的人是谁已禁用JavaScript