gpt4 book ai didi

php观察者模式在 session 超时时注销用户

转载 作者:可可西里 更新时间:2023-11-01 13:23:44 25 4
gpt4 key购买 nike

我正在尝试在用户 session 超时时注销用户。注销用户 - 在我的例子中 - 需要修改用户在数据库中的“在线”状态。
我在想我也许可以使用观察者模式来制作一些东西来监视用户 session 的状态并在 session 过期时触发回调 - 这将保留用户名以便我们可以更新数据库。我不确定在 session 端从哪里开始。我可以将回调绑定(bind)到 session 超时吗?

这些东西是否内置于任何可用的 pear 或 zend session 包中?我会尽我所能来实现这一目标!



更新 @ 16:33:
如果你有一个用户可以相互交互的系统(但他们只能与在线用户交互)怎么办?用户需要知道当前还有哪些其他用户在线。

如果我们只是在每次页面刷新时检查 session 是否仍然存在,那么在超时后,用户将被发送到一个未登录的页面,但他们在系统中仍被列为在线。

该方法会很好,只是当我们超时 session 时,我们会丢失有关可用于注销用户的信息。



更新 @16:56:
正确的。谢谢。我同意...有点丑。我已经对服务器进行了一些缓慢的轮询,因此实现该方法非常容易。对于 session 处理包来说,这似乎是一个非常有用的特性。 Zend 和 PEAR 都有 session 包。

最佳答案

先看最简单的情况。假设您的系统上有 1 个用户,您希望他们的 session 超时,并且您希望准确报告他们的状态。用户在 12 分钟内未访问页面,您的 session 超时设置为 10 分钟。两件事中的一件会发生。他们要么在短时间内再次访问,要么不会。如果他们不再访问,系统将如何运行代码来更新他们的超时状态?唯一的方法*是让一个单独的进程为当前处于“ session 中”状态的所有用户启动状态更新功能。

每次用户访问您的网站时,更新数据库中的一个变量,将他们的 session 与上次访问时间相关联。然后创建一个每分钟运行一次的 cron 作业。它调用一个简单的函数来检查 session 状态。任何早于超时期限的 session 都将设置为“超时”状态。 (您还应该在超时 session 坐了一段时间后清理表格)。如果您想要有关登录人数的报告,请查询上次访问时间晚于超时间隔开始时间的所有记录。

"*"还有其他方法,但对于简单的 Web 应用程序而言,这并不是必需的。如果您有比简单网络应用程序更复杂的东西,请更新您的问题以反射(reflect)特定需求。

关于php观察者模式在 session 超时时注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com