A super easy PHP Framework for web development! https://github.com/exacti/phacil-framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

265 lines
5.0 KiB

<?php
/**
* Copyright © 2024 ExacTI Technology Solutions. All rights reserved.
* GPLv3 General License.
* https://exacti.com.br
* Phacil PHP Framework - https://github.com/exacti/phacil-framework
*/
namespace Phacil\Framework\Session\Redis;
use Cm\RedisSession\Handler\ConfigInterface;
class Config implements ConfigInterface {
/**
*
* @var int
*/
private $logLevel = 1;
const PARAM_HOST = 'tcp://127.0.0.1';
const PARAM_PORT = 6379;
const PARAM_DATABASE = 3;
const DEFAULT_COMPRESSION_THRESHOLD = 2048;
const PARAM_COMPRESSION_LIBRARY = 'gzip';
const PARAM_TIMEOUT = 2.5;
const PARAM_MAX_CONCURRENCY = 12;
const PARAM_BREAK_AFTER = 30;
const PARAM_SENTINEL_CONNECT_RETRIES = null;
/**
* Session max lifetime
*/
const SESSION_MAX_LIFETIME = 31536000;
/**
* Try to break lock for at most this many seconds
*/
const DEFAULT_FAIL_AFTER = 15;
const PARAM_MIN_LIFETIME = 60;
const PARAM_DISABLE_LOCKING = true;
const PARAM_BOT_LIFETIME = 7200;
const PARAM_BOT_FIRST_LIFETIME = 60;
const PARAM_FIRST_LIFETIME = 600;
const PARAM_SESSION_LIFETIME = 31536000;
const PARAM_SENTINEL_SERVERS = null;
/**
*
* @var \Phacil\Framework\Config
*/
private $config;
/**
* Get the Framework instance
* @return void
*/
public function __construct(\Phacil\Framework\Config $config){
$this->config = $config;
$this->logLevel = \Phacil\Framework\Config::Debug() ? 6 : $this->logLevel;
return;
}
/**
*
* {@inheritdoc}
*/
function getLogLevel() {
return $this->config->get('session_redis_log_level') ?: $this->logLevel;
}
/**
* {@inheritdoc}
*/
public function getHost()
{
return $this->config->get('session_redis_dsn') ? : self::PARAM_HOST;
}
/**
* {@inheritdoc}
*/
public function getPort()
{
return $this->config->get('session_redis_port') ?: self::PARAM_PORT;
}
/**
* {@inheritdoc}
*/
public function getDatabase()
{
return (string)$this->config->get('session_redis_database') ?: self::PARAM_DATABASE;
}
/**
* {@inheritdoc}
*/
public function getPassword()
{
return $this->config->get('session_redis_password') ?: '';
}
/**
* {@inheritdoc}
*/
public function getTimeout()
{
return $this->config->get('session_redis_timeout') ? : self::PARAM_TIMEOUT;
}
/**
* {@inheritdoc}
*/
public function getPersistentIdentifier()
{
return $this->config->get('session_redis_persistent_id') ?: '';
}
/**
* {@inheritdoc}
*/
public function getCompressionThreshold()
{
return $this->config->get('session_redis_compression_threshold') ?: self::DEFAULT_COMPRESSION_THRESHOLD ;
}
/**
* {@inheritdoc}
*/
public function getCompressionLibrary()
{
return $this->config->get('session_redis_compression_library') ?: (self::PARAM_COMPRESSION_LIBRARY);
}
/**
* {@inheritdoc}
*/
public function getMaxConcurrency()
{
return $this->config->get('session_redis_max_concurrency') ?: (self::PARAM_MAX_CONCURRENCY);
}
/**
* {@inheritdoc}
*/
public function getMaxLifetime()
{
return $this->config->get('session_redis_max_lifetime') ?: self::SESSION_MAX_LIFETIME;
}
/**
* {@inheritdoc}
*/
public function getMinLifetime()
{
return (int)$this->config->get('session_redis_min_lifetime') ?: (self::PARAM_MIN_LIFETIME);
}
/**
* {@inheritdoc}
*/
public function getDisableLocking()
{
return (bool)$this->config->get('session_redis_disable_locking') ?: (self::PARAM_DISABLE_LOCKING);
}
/**
* {@inheritdoc}
*/
public function getBotLifetime()
{
return (int) $this->config->get('session_redis_bot_lifetime') ?: (self::PARAM_BOT_LIFETIME);
}
/**
* {@inheritdoc}
*/
public function getBotFirstLifetime()
{
return (string)$this->config->get('session_redis_bot_first_lifetime') ?: (self::PARAM_BOT_FIRST_LIFETIME);
}
/**
* {@inheritdoc}
*/
public function getFirstLifetime()
{
return (int)$this->config->get('session_first_lifetime') ?: (\Phacil\Framework\Session\Api\HandlerInterface::DEFAULT_SESSION_FIRST_LIFETIME);
}
/**
* {@inheritdoc}
*/
public function getBreakAfter()
{
return (int)$this->config->get('session_redis_break_after') ?: (self::PARAM_BREAK_AFTER);
}
/**
* {@inheritdoc}
*/
public function getLifetime()
{
return (int)$this->config->get('session_expire') ?: \Phacil\Framework\Session\Api\HandlerInterface::DEFAULT_SESSION_LIFETIME;
}
/**
* {@inheritdoc}
*/
public function getSentinelServers()
{
return $this->config->get('session_redis_sentinel_servers') ?: null;
}
/**
* {@inheritdoc}
*/
public function getSentinelMaster()
{
return $this->config->get('session_redis_sentinel_master') ?: null;
}
/**
* {@inheritdoc}
*/
public function getSentinelVerifyMaster()
{
return $this->config->get('session_redis_verify_master') ?: (null);
}
/**
* {@inheritdoc}
*/
public function getSentinelConnectRetries()
{
return $this->config->get('session_redis_sentinel_connect_retries') ?: (self::PARAM_SENTINEL_CONNECT_RETRIES);
}
/**
* {@inheritdoc}
*/
public function getFailAfter()
{
return (int)$this->config->get('session_redis_fail_after') ?: self::DEFAULT_FAIL_AFTER;
}
}