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