php redis обработчик сохранения сеанса, расширяющий функцию gc (сбор мусора)

#php #session #phpredis

#php #сессия #phpredis

Вопрос:

Есть ли способ расширить обработчик 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
  

Ответ №1:

Вот что я придумал

 $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();
}