PHP 垃圾收集说明

标签 php session garbage-collection

根据PHP手册,session.gc_probability和session.gc_divisor声明gc将基于这个概率发生。我明白了。

我不清楚的是这个概率是逐个 session 还是整体。

那么如果我的 GC 发生概率是 1% (1/100),这是否意味着如果一个 session 不断延长,每次有 1% 的变化特定 session 将被清理?或者这是否意味着所有现有 session (以及新 session )的 1% 将触发所有其他现有 session 的 GC?

我很确定是后者,我只是想确定一下。

这个问题的目的是在我们的网站上,我希望用户有长期 session (6 个月)。如果所有 session 中有 1% 触发了 GC,那么这实际上消除了拥有该长期 session 的目的,因为 GC 最终将每隔一两个小时发生一次。

最佳答案

每次执行 PHP 脚本并启动 session 时,它都有可能扫过 session 文件夹,杀死旧 session 。

清理只会删除在一定时间内未访问的 session 。但是 PHP 不保证 session 将在该时间内被销毁。

您的长期 session 策略应该运作良好,但您可能希望将 1% 减少到 0.1% 左右

另一件需要注意的事情是,操作系统可能会在重启期间清理您的/tmp 文件夹,即使 PHP 不会这样做。

关于PHP 垃圾收集说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828975/

相关文章:

php - 将密码插入数据库,与常规文本字段有什么区别?

PHP, print_r($_SESSION) 不显示它的内容?

.net - 每 100 秒收集一次垃圾

java - Java中如何手动进行长时间Full GC

php - 使用 Jquery 在 <a> 标签之后添加 <span> 标签

php - SQL 查询 - 使用 Select 插入语句(仅使用 select 的一列)

php - 优点和缺点 : Writing HTML in PHP

java - Tomcat:无法将 session 序列化到数据库中

php - CakePHP 让我退出

c# - 未收集内存