【问题标题】:perform a query on database after closing browser(php)关闭浏览器后对数据库执行查询(php)
【发布时间】:2013-08-03 11:09:50
【问题描述】:

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

【问题讨论】:

  • 没有办法在所有情况下都制作这样的东西。你冷做的是查看unload 事件。但是如果浏览器崩溃了怎么办?此外,还有大量与您的问题完全相同或非常相似的问题。

标签: php mysql ajax


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          如果你真的遇到麻烦,试试这个方法!

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

          `live_last_update` TIMESTAMP NULL DEFAULT NULL
          

          对于已登录的用户,每隔(e.g. 5 minutes) 将应用中的字段更新为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/

          【讨论】:

            猜你喜欢
            • 2014-01-21
            • 1970-01-01
            • 2014-05-16
            • 1970-01-01
            • 2012-05-03
            • 2013-04-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多