(php) 我们应该使用抓取收集器来进行基于 Redis 的会话处理吗?

Mos*_*ebi 3 php redis

我已设置使用 REDIS 作为我的 PHP 会话处理程序。与 REDIS 一起使用时似乎存在会话过期问题。我对么?或者每个redis密钥本身的ttl生命周期处理会话的过期?

我使用的只是将处理程序设置为使用 REDIS。另外,如果会话处理程序发生更改,PHP 似乎不会处理垃圾收集。

dmu*_*uir 5

据我所知,使用 Redis 时不需要会话垃圾回收。每个密钥都有自己的 TTL,您可以使用该TTL命令进行检查。在我的开发环境中,我将会话处理程序设置为 redis,然后访问我的测试站点。当我跑步时KEYS *,我得到了我的会话的密钥。然后我运行TLL "PHPREDIS_SESSION:<session key>并获得收集会话之前的剩余时间。

您可以使用非常短的 gc_maxlifetime 值自行测试。例如15。

127.0.0.1:6379> KEYS *
1) "PHPREDIS_SESSION:otgaqapormlo7l0pjpl6v7upq1"
127.0.0.1:6379> TTL "PHPREDIS_SESSION:otgaqapormlo7l0pjpl6v7upq1"
(integer) 6
127.0.0.1:6379> TTL "PHPREDIS_SESSION:otgaqapormlo7l0pjpl6v7upq1"
(integer) 1
127.0.0.1:6379> TTL "PHPREDIS_SESSION:otgaqapormlo7l0pjpl6v7upq1"
(integer) -2
127.0.0.1:6379> KEYS *
(empty list or set)
Run Code Online (Sandbox Code Playgroud)