-1

当用户关闭他的浏览器时,我需要对数据库执行 MySQL 查询。我正在开发一个应用程序,当用户登录数据库字段时,lo-gin_status 设置为 1,当用户注销时,他的 lo-gin_status 设置为0.但是如果用户登录但没有注销他只是关闭了他的浏览器,我该怎么办。

4

5 回答 5

1

尝试这个

$(window).unload( function () { alert("AJAX function to do the required job"); } );
于 2013-08-03T11:22:16.813 回答
1

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

于 2013-08-03T11:16:09.997 回答
0

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

于 2013-08-03T11:13:06.377 回答
0

如果您真的遇到麻烦,请尝试这种方式!

向用户表添加一列,例如:

`live_last_update` TIMESTAMP NULL DEFAULT NULL

为登录的用户current timestamp在您的应用程序中更新该字段。(e.g. 5 minutes)如果用户手动注销设置为null. 表示用户是否在线。

使用cron job脚本,可以安排任务在后台运行!由于您无权访问 cron 作业中的会话(为什么?),请编写您的脚本来检查live_last_update所有用户记录中的字段,其中字段未在 last 中更新5 minutes。这样您就知道哪些用户没有注销。并且可以null根据需要进行设置。

设置cron job为执行特殊时间。

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

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

于 2013-08-03T15:27:50.080 回答
0

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

确保您至少收到过一次 ajax 调用的回复,否则您将注销禁用 JavaScript 的人

于 2013-08-03T15:40:23.620 回答