【发布时间】:2011-12-11 08:29:40
【问题描述】:
从 PHP 手册中,session.gc_probability 和 session.gc_divisor 声明 gc 将基于此概率发生。我明白了。
我不清楚的是这个概率是逐个会话还是整体的。
因此,如果我发生 GC 的概率是 1% (1/100),这是否意味着如果一个会话不断延长,每次发生 1% 的变化时,该特定会话就会被清理?或者这是否意味着所有现有会话(以及新会话)中的 1% 将触发所有其他现有会话的 GC?
我很确定是后者,我只是想确定一下。
这个问题的目的是在我们的网站上,我希望用户进行长期会话(6 个月)。如果 1% 的会话触发 GC,那么这实际上消除了进行长期会话的目的,因为 GC 最终会每隔一两个小时发生一次。
【问题讨论】:
-
非常有趣的问题! +1
-
对于其他阅读本文的尝试上述内容的人,6 个月的会话文件可能会导致严重的性能问题(如下所述)。但是,您可以使用 session_set_save_handler() 编写自定义会话处理程序,该处理程序将使用 DB 而不是 FS,从而消除许多性能损失。
标签: php session garbage-collection