Skip to content
  1. Extras
  2. smartSessions

smartSessions ​

The component extends the standard session handler modSessionHandler by adding the following columns to the session table (table name: modx_smart_sessions):

  • ip — user IP address;
  • user_agent — browser User-Agent;
  • user_id — user id if logged in.

This provides richer data about visitors and lets you set different session lifetimes for different visitor types.

Installation ​

  1. Install the package from the repository.
  2. In system setting session_handler_class set the value to smartSessionHandler.
  3. Verify that data is being written to modx_smart_sessions. The modx_sessions table is no longer used and can be cleared.

Uninstall ​

Restore the default value modSessionHandler in system setting session_handler_class, then you can remove the package.

Settings ​

To configure the component go to "System settings", namespace "smartsessions".

  • smartsessions_bot_signatures — list of search bot signatures separated by a vertical bar, for matching (via LIKE) against user_agent. Add bots that frequently visit your site.

  • smartsessions_bots_gc_maxlifetime — session lifetime for bots listed in smartsessions_bot_signatures. Lowering it shortens bot session storage and reduces table size.

  • smartsessions_empty_user_agent_gc_maxlifetime — session lifetime for empty User-Agent. Usually can be set the same as for bots.

  • smartsessions_authorized_users_gc_maxlifetime — session lifetime for logged-in users. You can increase it above session_gc_maxlifetime.

Default session lifetime is still controlled by session_gc_maxlifetime.

Example configuration ​

  • session_gc_maxlifetime — default 604800 (7 days);
  • smartsessions_bots_gc_maxlifetime — 10800, bot sessions kept 3 hours, minimal storage;
  • smartsessions_empty_user_agent_gc_maxlifetime — 10800, empty User-Agent sessions kept 3 hours;
  • smartsessions_authorized_users_gc_maxlifetime — 2592000, logged-in user sessions kept 30 days for longer login and cart persistence.

Known issues ​

The menu item "Manage" / "End all sessions" will stop working, because that action only works with the standard handler modSessionHandler and is hardcoded.

Useful ​

SQL query to see session counts grouped by user_agent and find the most frequent User-Agents in your database:

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

Example SQL query result