php数据加锁redis php redis锁( 五 )


还有,发现 Session 文件被删除后 , 再次请求,还是会生成和之前文件名相同的 Session 文件(因为浏览器并没有关闭,再次请求发送的 session_id 是相同的,所以重新生成的 Session 文件的文件名还是一样的) 。但是,我不理解的是:这个重新出现的文件的创建时间竟然是第一次的那个创建时间,难道它是从回收站中回来的?(确实,我做这个试验时是在 window 下进行的)
我猜测的原因是这样:当启动会话后,PHP 根据 session_id 找到并打开了对应的 Session 文件,然后才启动 GC 进程 。GC 进程就只检查除了当前这个 Session 文件外的其他文件 , 发现过期的就干掉 。所有 , 即使当前这个 Session 文件已经过期了 , GC 也没有删除它 。
我认为这个不合理的 。
由于发生这种情况影响也不大(毕竟线上请求很多,当前请求的过期文件被其他请求唤起的 GC 干掉的可能性是比较大的) + 我没有信心去看 PHP 源代码 + 我并不在线上使用 PHP 自带的 files 型 Session 处理器 。所以,这个问题我就没有深入研究了 。请谅解 。
?php
// 过期时间设置为 30 秒
ini_set('session.gc_maxlifetime', '30');
// GC 启动概率设置为 100%
ini_set('session.gc_probability', '100');
ini_set('session.gc_divisor', '100');
session_start();
$_SESSION['name'] = 'Jing';
var_dump($_SESSION);
?
php数据加锁redis的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php redis锁、php数据加锁redis的信息别忘了在本站进行查找喔 。

推荐阅读