CakePHP-3 удаляет сеансы с истекшим сроком из моей базы данных? - PullRequest
0 голосов
/ 28 января 2019

Заполняется таблица базы данных моих сессий (размер приближается к 1 ГБ через ~ 2 месяца).Есть много сессий с прошедшей датой истечения срока.Я могу написать cron-job, чтобы регулярно их удалять, но так ли это?Или есть CakePHP встроенная функция для очистки сеансов с истекшим сроком, который неправильно настроен или отключен в моем приложении?

Моя конфигурация сеанса:

'Session' => [
    'defaults' => 'database',
    'ini' => [
        'session.cookie_path' => '/',
        'session.cookie_domain' => 'something.local'
    ],
    'timeout' => 4320 // 3 days
],

1 Ответ

0 голосов
/ 28 января 2019

Обработчик сеансов базы данных CakePHP использует стандартизированный API-обработчик сеансов PHP, то есть он реализует SessionHandlerInterface и подключается через session_set_save_handler().

В обработчике сохранения реализован метод gc(), который удаляет просроченныйсеансы, то есть строки, к которым применяется условие expires < time().Он вызывается изнутри PHP при запуске сеанса, в зависимости от настроек session.gc_divisor и session.gc_probability.

Если просроченные сеансы удаляются недостаточно часто, попробуйте изменить настройки сборки мусора PHP и / илинастройки тайм-аута сеанса (см. параметр timeout) в случае необходимости.

См. также

...