PHP Redis会话保存处理程序扩展功能gc垃圾收集

问题描述

有没有一种方法可以扩展phpredis session.save处理程序以在发生垃圾回收时调用一个函数

        ini_set('session.save_handler','redis');
        //code to set an additional gc function
        session_start();

我希望为我的会话添加其他清理步骤。我要清除的数据是数据库中的临时文件

如果无法扩展PHPredis,是否可以使用以下ini设置编写一种函数来模拟会话垃圾回收?

session.gc_probability = 1
session.gc_divisor = 100

解决方法

这是我想出的

$gc_probability = ini_get('session.gc_probability');
$gc_divisor = ini_get('session.gc_divisor');
$probability = $gc_probability/$gc_divisor;
$random_float_between_0_and_1 = mt_rand() / mt_getrandmax();
        
if ($random_float_between_0_and_1 <= $probability)
{
    $this->cleanup_expired_files();
}