0

我需要知道用户登录和注销,问题是当用户会话超时时,我该如何处理这个来更新应用程序。

例如,在会话销毁时,我想更新一个数据库表?

我不喜欢使用 cron 作业,因为它会在服务器上加载很多。

提前致谢。

4

1 回答 1

0

一般来说,没有办法为所有用户保留有关会话状态的并发信息,而不会对性能造成很大影响。正如您已经说过的,这是由于一次超时无法正确终止会话的结果。

此时,您有两个选择:

1. 运行一个 cron 作业(确定性)

您可以设置 cron 作业以根据需要经常运行。这将确保您拥有的信息最多与 cron 间隔一样旧。

2.设置会话GC概率

设置session.gc_probability和PHP 选项允许您指定在每个请求session.gc_divisor上启动会话清理的概率。通常这是一个相对较低的值(例如 1/100),因为在非常高的服务器负载下,它会很快降低您的性能。

这种方法的好处是它是内置的,如果您的服务器实际上没有被用户访问,它不会花费您任何费用。

主要缺点是必须始终考虑服务器上的请求数/秒数来调整概率,这不是一个常数。其他缺点是它依赖于实际工作的请求(如果没有人访问您的服务器,将永远不会清理会话)并且它是一个全局设置(在服务器范围内工作,而不是在应用程序范围内工作)。

于 2011-09-14T07:08:32.227 回答