关闭浏览器后对数据库执行查询(php)

时间:2013-08-03 11:09:50

标签: php mysql ajax

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

6 个答案:

答案 0 :(得分:1)

无法可靠地检测浏览器何时关闭。因此,在浏览器关闭时,您无法可靠地操作数据库。因此,在没有检测到浏览器关闭的情况下,您需要一些解决方法。将该解决方法作为浏览器关闭时执行任何操作的首选方法,并删除在浏览器关闭时需要执行操作的要求。

答案 1 :(得分:1)

试试这个

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

无法保证它会起作用,但请看一下此链接

I want to detect when user close browser window?

答案 4 :(得分:0)

如果你遇到麻烦,请尝试这种方式!

向用户表添加一列,如:

`live_last_update` TIMESTAMP NULL DEFAULT NULL

为登录用户每隔current timestamp将字段更新为应用中的(e.g. 5 minutes)。如果用户手动注销设置为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/

答案 5 :(得分:0)

为什么每x秒都没有ajax请求。如果你没有在3秒钟内从浏览器中听到过冠部工作的清理工作?

确保您至少听过一次ajax电话回复,否则您会将已禁用JavaScript的人员记录下来