如何在Zend Framework中处理会话销毁?

时间:2011-09-14 06:28:58

标签: php zend-framework session zend-session

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

在会话销毁时,我想更新db表,例如?

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

通常,无法在不产生大量性能影响的情况下为所有用户保留会话状态的并发信息。正如您已经说过的,这是因为一次超时无法正确终止会话。

此时您有两个选择:

<强> 1。运行cron作业(确定性)

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

<强> 2。设置会话GC概率

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

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

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