gpt4 book ai didi

php - CodeIgniter 的 ci_sessions 是否需要偶尔清空?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:53:05 25 4
gpt4 key购买 nike

我正在使用与数据库相关的 CI session 。所以我们所有的 session 都在我们数据库的这个 ci_sessions 表中,考虑到 session_id 每 5 分钟更改一次,它可以获得很多行。

我们是否需要清空表格,比如说每个月/每周一次?

最佳答案

虽然 @Marc-Audet 所说的是真的,但如果您看一下代码,您会发现这是一种非常糟糕的清理 session 的方法。

构造器每次启动时都会调用_sess_gc函数。所以,基本上每个请求到你的服务器,如果你有它自动加载。

然后,它会生成一个低于 100 的随机数,并查看它是否低于某个值(默认为 5)。如果满足此条件,则它将删除 session 表中 last_activity 值小于当前时间减去 session 到期时间的所有行。

虽然这适用于大多数情况,但技术上有可能(如果世界真的是随机的)随机数生成器不会长时间生成低于 5 的数字,在这种情况下,您的 session 将不会被清理.

此外,如果您将 session 到期时间设置为很长的时间(如果您设置为 0,CI 会将其设置为 2 年),那么这些行无论如何都不会被删除。如果您的网站足够好,可以吸引大量访问者,您的 DBA 很快就会指责 session 表 :)

它适用于大多数情况 - 但我不会将其称为合适的解决方案。他们的 session id 再生真的应该被建立来删除与以前的 ids 相关的记录,垃圾收集真的不应该留给一个随机数——理论上,可能没有像你希望的那样频繁地生成所需的数字.

在我们的例子中,我已经从 session 库中删除了 session 垃圾收集,并且我每天手动处理一次(使用 cron 作业......和合理的 session 过期时间)。这减少了对数据库不必要的命中次数,也不会在数据库中留下大量表。它仍然是一张大 table ,但比以前小了很多。

关于php - CodeIgniter 的 ci_sessions 是否需要偶尔清空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com