我需要知道用户登录和注销,问题是当用户会话超时时,我该如何处理这个来更新应用程序。
例如,在会话销毁时,我想更新一个数据库表?
我不喜欢使用 cron 作业,因为它会在服务器上加载很多。
提前致谢。
我需要知道用户登录和注销,问题是当用户会话超时时,我该如何处理这个来更新应用程序。
例如,在会话销毁时,我想更新一个数据库表?
我不喜欢使用 cron 作业,因为它会在服务器上加载很多。
提前致谢。
一般来说,没有办法为所有用户保留有关会话状态的并发信息,而不会对性能造成很大影响。正如您已经说过的,这是由于一次超时无法正确终止会话的结果。
此时,您有两个选择:
1. 运行一个 cron 作业(确定性)
您可以设置 cron 作业以根据需要经常运行。这将确保您拥有的信息最多与 cron 间隔一样旧。
2.设置会话GC概率
设置session.gc_probability
和PHP 选项允许您指定在每个请求session.gc_divisor
上启动会话清理的概率。通常这是一个相对较低的值(例如 1/100),因为在非常高的服务器负载下,它会很快降低您的性能。
这种方法的好处是它是内置的,如果您的服务器实际上没有被用户访问,它不会花费您任何费用。
主要缺点是必须始终考虑服务器上的请求数/秒数来调整概率,这不是一个常数。其他缺点是它依赖于实际工作的请求(如果没有人访问您的服务器,将永远不会清理会话)并且它是一个全局设置(在服务器范围内工作,而不是在应用程序范围内工作)。