Старые сеансы не будут автоматически удалены из базы данных

Я запускаю сайт 3.8.5 с честным трафиком. Из-за некоторых недавних проблем я заметил, что таблица __session не подбирается автоматически.

Время жизни сеанса устанавливается в 1 час (60 минут), но когда я понял, что возникла проблема, в базе данных были сеансы, которые были старше месяца. Я урезал таблицу __session четыре часа назад, и она содержит сеансы, которые четыре часа, поэтому коллекции мусора, похоже, не работают правильно.

Я не могу быть уверен в точной отметке времени самого старого сеанса, прежде чем я усекаю таблицу __session, но я думаю, что это было 30-31 января 2018 года. Это может быть совпадение, но оно будет коррелировать с выпуском 3.8.4, который включает этот запрос на тягу , который изменяет порядок очистки сеансов.

Как я могу убедиться, что сеансы базы данных старше, чем «время жизни сеанса», были удалены правильно.

6 голосов | спросил Dom 6 MarpmTue, 06 Mar 2018 23:45:35 +03002018-03-06T23:45:35+03:0011 2018, 23:45:35

2 ответа


5

У меня есть решение после прочтения различных запросов на подачу на GitHub, как указано выше Адамом Гаттом и Дрю Джи.

В сводке изменений для github.com/joomla/joomla-cms/pull/19548 , говорится, что данные сеанса базы данных очищаются в соответствии с расписанием, установленным вероятностной сборкой мусора сессии PHPs. Проверяя мою конфигурацию PHP, я обнаружил, что переменная session.gc_probability была установлена ​​равной нулю, поэтому сборка мусора сеанса никогда не будет выполняться. Изменение этого значения до 1 (с делителем 1000) привело к периодической очистке таблицы сеансов.

Я не собираюсь отмечать этот ответ так же корректно, как я думаю, ответ Адама Гэтта, предлагающий отключиться от базы данных в качестве обработчика сеанса, одинаково важен. Также точка Drew G, касающаяся изменения обработки сеанса в предстоящем выпуске Joomla, вероятно, сделает все это неуместным в любом случае.

ответил Dom 7 MarpmWed, 07 Mar 2018 18:56:55 +03002018-03-07T18:56:55+03:0006 2018, 18:56:55
6

Я полагаю, что изменения были внесены в Joomla с выпуском версии 3.8.4 и что таблица сеанса больше не будет очищена, если использовать «Database» в качестве обработчика сеанса.

Смотрите страницу на Github .

Рекомендация заключалась в том, чтобы изменить обработчик сеанса из «базы данных» на «PHP». Чтобы изменить этот параметр, войдите в бэкэнд веб-сайта. Доступ к системе -> Глобальное конфигурационное меню. Перейдите на вкладку «Система» и прокрутите вниз до заголовка «Настройки сеансов». Выберите «PHP» в раскрывающемся списке для параметра «Обработчик сеанса».

ответил Adam Gatt 7 MaramWed, 07 Mar 2018 08:39:04 +03002018-03-07T08:39:04+03:0008 2018, 08:39:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132