redis plugin testing

This commit is contained in:
Mike Macgirvin 2024-05-13 21:58:33 +10:00
parent a224febfa7
commit 6574d185cd
3 changed files with 16 additions and 6 deletions

View file

@ -4,6 +4,10 @@ config:
webroot: .
php: 8.2
services:
redisservice:
type: redis
persist: true
portforward: true
mailservice:
type: mailhog
portforward: true

View file

@ -31,7 +31,9 @@ class Session
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_httponly', 1);
$this->custom_handler = boolval(get_config('system', 'session_custom', false));
$this->custom_handler = get_config('system', 'session_custom', false);
$session_save_handler = get_config('system', 'session_save_handler', null);
$session_save_path = get_config('system', 'session_save_path', null);
/*
* Set our session storage functions.
@ -40,8 +42,6 @@ class Session
if ($this->custom_handler) {
/* Custom handler (files, memached, redis..) */
$session_save_handler = strval(get_config('system', 'session_save_handler', null));
$session_save_path = strval(get_config('system', 'session_save_path', null));
if ($session_save_handler && $session_save_path) {
ini_set('session.save_handler', $session_save_handler);
ini_set('session.save_path', $session_save_path);
@ -49,8 +49,12 @@ class Session
logger('Session save handler or path not set.', LOGGER_NORMAL, LOG_ERR);
}
} else {
$handler = new SessionHandler();
if (!empty($session_save_handler) && $session_save_handler === 'Redis'
&& $session_save_path) {
$handler = new SessionRedis($session_save_path);
} else {
$handler = new SessionHandler();
}
$this->handler = $handler;
$x = session_set_save_handler($handler, false);

View file

@ -19,6 +19,7 @@ class SessionRedis implements SessionHandlerInterface {
try {
if (isset($credentials['path'])) {
$this->redis->connect($credentials['path']);
logger('redis connected - path');
}
else {
if (isset($credentials['query'])) {
@ -28,13 +29,14 @@ class SessionRedis implements SessionHandlerInterface {
$vars = [];
}
$this->redis->connect(
(isset($credentials['scheme']) ? $credentials['scheme'] . '://' : '') . $credentials['host'],
($credentials['host']),
(isset($credentials['port']) ? $credentials['port'] : 6379),
(isset($vars['timeout']) ? $vars['timeout'] : 1),
null,
0,
(isset($vars['read_timeout']) ? $vars['read_timeout'] : 0)
);
logger('redis connected');
if (isset($vars['auth'])) {
$this->redis->auth($vars['auth']);