浏览器退出时更新数据库

时间:2011-04-13 18:24:13

标签: php html css

如果用户退出浏览器或导航离开页面,有人知道如何更新mysql数据库吗?我将值设置为1并希望在这种情况下将其设置为0。多年来,我一直在用头撞墙,任何帮助都会受到大力赞赏,谢谢。我正在使用PHP。我已经在身体卸载上尝试了它,但它没有做我想要的。

2 个答案:

答案 0 :(得分:4)

不要那样做。仅仅因为您依靠浏览器向您发送通知(通过beforeunload事件)或其他一些机制。如果浏览器崩溃,或者用户将计算机置于休眠/休眠状态,会发生什么?

您可以考虑其他选项,例如PING!浏览器每隔1分钟左右通过Ajax调用发送的方法告诉他还活着。您需要做的就是创建一个MySQL程序,该程序将扫描超过1:30分钟的任何“活动”条目(称为last_seen TIMESTAMP或其他东西)并将其设置为“活着”为0。可以在随机请求中调用此过程(非常类似于PHP会话清理机制)。

这将确保用户仍然在那里,因为你将获得PING!定期请求,当用户停止时,您将能够安全地说他不会PING!不再(虽然它会导致轻微延迟,但是可接受的延迟)。这也将确保用户安全。

答案 1 :(得分:0)

PHP只能在页面访问时更改内容。从PHP的角度来看,一旦脚本结束,事务就结束了,它就不再与该页面有任何关系了。

唯一的方法是保持连接打开,脚本运行,并使用以下内容:

<?php

  function shutdown()
  {
     // here you change the value on your db...
  }

  register_shutdown_function('shutdown');

 // send the data to client
  echo "anything";
  flush();
  // sleep for a lot of time... 99999 seconds...
  sleep(99999);
?>