Posted 7 мая, 20186 yr comment_147207 Добрый день, проблема заключается, в том что на версии ipb 4.2.8 работало все хорошо, после того как обновились до 4.3 после обновлен до 4.3.1 была замечена проблема с сессиями, после авторизации на форуме через steam, (единственный метод авторизации Sign in through Steam 2.0.4, стандартный метод выключен), после того как закрыть страницу, и подождать некоторое время 30-60 минут, авторизация слетает как с Redis так и без него, то есть меняется ips4_IPSSessionFront как решить проблему? 1 минуту назад, Emix12 сказал: Добрый день, проблема заключается, в том что на версии ipb 4.2.8 работало все хорошо, после того как обновились до 4.3 после обновлен до 4.3.1 была замечена проблема с сессиями, после авторизации на форуме через steam, (единственный метод авторизации Sign in through Steam 2.0.4, стандартный метод выключен), после того как закрыть страницу, и подождать некоторое время 30-60 минут, авторизация слетает как с Redis так и без него, то есть меняется ips4_IPSSessionFront как решить проблему? P.S. Версия PHP 7.2.3, Mysql 5.7.22, Ubuntu 18.01
7 мая, 20186 yr Author comment_147212 Проблема решена, проблема заключается во времени жизни сессии!! php.ini session.gc_maxlifetime session.cookie_lifetime Если нету возможности изменить данные параметры то делаем так: 1. /system/Session/Store/Database.php заменяем: public static function clearSessions( $timeout ) { \IPS\Db::i()->delete( 'core_sessions', array( 'running_time<?', ( time() - $timeout ) ) ); } на $timeout = 2592000; //1 month public static function clearSessions( $timeout ) { \IPS\Db::i()->delete( 'core_sessions', array( 'running_time<?', ( time() - $timeout ) ) ); } 2. /system/Session/Store/Redis.php заменяем: public static function clearSessions( $timeout ) { \IPS\Redis::i()->zRemRangeByScore( 'session_map', 0, time() - $timeout ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_spiders', 0, time() - $timeout ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_users', 0, time() - $timeout ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_guests', 0, time() - $timeout ); } на $timeout = 2592000; //1 month public static function clearSessions( $timeout ) { \IPS\Redis::i()->zRemRangeByScore( 'session_map', 0, time() - $timeout ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_spiders', 0, time() - $timeout ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_users', 0, time() - $timeout ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_guests', 0, time() - $timeout ); }
8 мая, 20186 yr Author comment_147220 Отредактировать нельзя... 1. $timeout = 2592000; //1 month Удаляем строку, в место этого 1. /system/Session/Store/Database.php заменяем на: public static function clearSessions( $timeout ) { \IPS\Db::i()->delete( 'core_sessions', array( 'running_time<?', ( time() - 2592000 ) ) ); } 2. /system/Session/Store/Redis.php заменяем на: public static function clearSessions( $timeout ) { \IPS\Redis::i()->zRemRangeByScore( 'session_map', 0, time() - 2592000 ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_spiders', 0, time() - 2592000 ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_users', 0, time() - 2592000 ); \IPS\Redis::i()->zRemRangeByScore( 'session_online_guests', 0, time() - 2592000 ); }
8 мая, 20186 yr Author comment_147235 P.S /system/Session/Store/Redis.php ищем и заменяем : static protected $ttl = 1800; # 1800 30 mins на static protected $ttl = 2592000; #2592000 30day # 1800 30 mins
9 мая, 20186 yr comment_147362 Для идентификации старого пользователя должен быть ключ "login key" с помощью которого создается новая сессия после чего старая умерла. Плодить сессии месячной давности не самая лучшая идея, как минимум статистика форума может повести себя не адекватно да и хранилище сессий за это время сильно переполнится при посещаемом форуме.
9 мая, 20186 yr Author comment_147378 3 часа назад, siv1987 сказал: Для идентификации старого пользователя должен быть ключ "login key" с помощью которого создается новая сессия после чего старая умерла. Плодить сессии месячной давности не самая лучшая идея, как минимум статистика форума может повести себя не адекватно да и хранилище сессий за это время сильно переполнится при посещаемом форуме. Ну написать то вы написали, напишите ваш вариант
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.