-
Erick Hitter authoredb6264ea7
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
class-plugin.php 5.75 KiB
<?php
/**
* Offload session storage to Redis.
*
* @package Redis_User_Session_Storage
*/
namespace Redis_User_Session_Storage;
use Redis;
use RedisException;
use WP_Session_Tokens;
/**
* Redis-based user sessions token manager.
*
* @since 0.1
*/
class Plugin extends WP_Session_Tokens {
/**
* Holds the Redis client.
*
* @var Redis
*/
private $redis;
/**
* Track if Redis is available
*
* @var bool
*/
private $redis_connected = false;
/**
* Prefix used to namespace keys
*
* @var string
*/
public $prefix = 'wpruss';
/**
* Create Redis connection using the Redis PECL extension
*
* @param int $user_id User ID.
*/
public function __construct( $user_id ) {
// General Redis settings.
$redis = array(
'host' => '127.0.0.1',
'port' => 6379,
'socket' => null,
'serializer' => Redis::SERIALIZER_PHP,
);
if ( defined( 'WP_REDIS_USER_SESSION_HOST' ) && WP_REDIS_USER_SESSION_HOST ) {
$redis['host'] = WP_REDIS_USER_SESSION_HOST;
}
if ( defined( 'WP_REDIS_USER_SESSION_PORT' ) && WP_REDIS_USER_SESSION_PORT ) {
$redis['port'] = WP_REDIS_USER_SESSION_PORT;
}
if ( defined( 'WP_REDIS_USER_SESSION_SOCKET' ) && WP_REDIS_USER_SESSION_SOCKET ) {
$redis['socket'] = WP_REDIS_USER_SESSION_SOCKET;
}
if ( defined( 'WP_REDIS_USER_SESSION_AUTH' ) && WP_REDIS_USER_SESSION_AUTH ) {
$redis['auth'] = WP_REDIS_USER_SESSION_AUTH;
}
if ( defined( 'WP_REDIS_USER_SESSION_DB' ) && WP_REDIS_USER_SESSION_DB ) {
$redis['database'] = WP_REDIS_USER_SESSION_DB;
}
if ( defined( 'WP_REDIS_USER_SESSION_SERIALIZER' ) && WP_REDIS_USER_SESSION_SERIALIZER ) {