Skip to content
  1. Компоненты
  2. smartSessions

smartSessions

Компонент расширяет стандартный обработчик сессий modSessionHandler, добавляя следующие колонки в таблицу с сессиями (используется таблица с именем modx_smart_sessions):

  • ip — ip адрес пользователя;
  • user_agent - User-Agent браузера;
  • user_id — id пользователя, если он авторизован.

Благодаря этому можно получить расширенную информацию о посетителях на вашем сайте, а также задать различное время хранения сессий для разных посетителей сайта.

Установка

  1. Установите пакет из репозитория.
  2. В системной настройке session_handler_class поставьте значение smartSessionHandler.
  3. Проверьте, что данные начали собираться в таблицу modx_smart_sessions. При этом таблица modx_sessions больше не используется, ее можно очистить.

Удаление

Верните стандартное значение modSessionHandler в системной настойке session_handler_class, после чего можете удалить пакет.

Настройки

Для настройки компонента перейдите в раздел "Системные настройки", пространство имен "smartsessions".

  • smartsessions_bot_signatures — список сигнатур поисковых ботов, разделенных вертикальной чертой, для поиска (через LIKE) по полю user_agent. Добавьте сюда ботов, которые часто посещают ваш сайт.

  • smartsessions_bots_gc_maxlifetime — время жизни сессий ботов, указанных в настройке smartsessions_bot_signatures. Уменьшая его вы уменьшите срок хранения сессий ботов и сократите размер таблицы с сессиями.

  • smartsessions_empty_user_agent_gc_maxlifetime — время жизни сессий с пустым User-Agent. Как правило, его можно задать таким же, как и для ботов.

  • smartsessions_authorized_users_gc_maxlifetime — время жизни сессий авторизованных пользователей. Вы можете увеличить его и сделать значение больше, чем в настройке session_gc_maxlifetime.

Стандартное время жизни сессий по прежнему определяется настройкой session_gc_maxlifetime.

Пример сценария настройки компонента:

  • session_gc_maxlifetime — стандартное значение 604800 (7 дней);
  • smartsessions_bots_gc_maxlifetime — 10800, сессии ботов хранятся 3 часа и занимают минимум места в базе;
  • smartsessions_empty_user_agent_gc_maxlifetime — 10800, сессии с пустым User-Agent хранятся 3 часа и занимают минимум места в базе;
  • smartsessions_authorized_users_gc_maxlifetime — 2592000, сессии авторизованных пользователей хранятся 30 суток, что позволит дольше сохранять авторизацию и список покупок в корзине.

Известные проблемы

Пункт меню "Управление" / "Завершить все сеансы" перестанет работать. Происходит это по той причине, что данное действие работает только со стандартным обработчиком сессий modSessionHandler, что жестко прописано в коде.

Полезное

SQL запрос для просмотра количества сессий, сгруппированных по user_agent, который позволит найти самые частотные User-Agent в вашей базе:

sql
SELECT `user_agent`, COUNT(*) 
FROM `modx_smart_sessions` 
GROUP BY `user_agent` 
ORDER BY `COUNT(*)` DESC

Пример результата выполнения sql-запроса