我认为会话存储在客户端,因为浏览器关闭时会话会被删除。然而,今天我被告知这不是真的,会话存储在服务器上。
那么会话如何知道浏览器何时关闭,以便会话被删除呢?
事实并非如此。有两个因素在起作用:
-
the cookie 的生命周期在客户端;该 cookie 包含会话 ID。它与会话数据本身没有任何关系.
该手册可能没有足够强调这一点:
这与会话的生命周期无关
无论您将此设置设置为什么,都不会改变会话时长
住在你的服务器上。
这只会更改 HTTP 缓存过期时间(Expires:
and
Cache-Control: max-age
headers),它建议浏览器需要多长时间
可以将页面缓存在用户的缓存中,而无需重新加载它们
从服务器。
-
服务器端会话数据的生命周期;通过使用来自客户端的会话 ID 进行查找来“激活”会话。它的寿命是通过控制此处讨论的会话垃圾收集设置.
一位评论者在session.cache_expire
文档页面,大概实际上正在讨论会话数据:
大多数人也不知道的是,大多数 Linux 发行版
(至少对我来说 Debian 和 Ubuntu)有一个 cronbjob 可以清理你的
会话目录使用全局中设置的值/etc/php5/php.ini
(哪个
默认为 24 分钟)。因此,即使您将值设置得较大
脚本,cronbjob 仍将使用全局清理会话
价值。
如果遇到这种情况,可以将全局值设置得更高/etc/php5/php.ini
,禁用 cronjob 甚至更好,自己做
非系统范围目录或数据库中的会话清理。
正如您所看到的,在区分会话和会话之间时,社区中存在很多令人困惑的地方tracking和会话数据storage.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)