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.
61 lines
1.5 KiB
61 lines
1.5 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\AbstractCM;
|
|
|
|
//use Phacil\Framework\Config;
|
|
|
|
class Handler extends \Cm\RedisSession\Handler
|
|
{
|
|
const SESSION_PREFIX = parent::SESSION_PREFIX;
|
|
|
|
public $_name = null;
|
|
/**
|
|
* Write session data to Redis
|
|
*
|
|
* @param $id
|
|
* @param $data
|
|
* @param $lifetime
|
|
* @throws \Exception
|
|
*/
|
|
protected function _writeRawSession($id, $data, $lifetime)
|
|
{
|
|
if (version_compare(phpversion(), '7.4', '>=')) {
|
|
$sessionId = self::SESSION_PREFIX . $id;
|
|
$this->_redis->pipeline()
|
|
->select($this->_dbNum)
|
|
->hMSet($sessionId, array(
|
|
'data' => $this->_encodeData($data),
|
|
'lock' => 0, // 0 so that next lock attempt will get 1
|
|
))
|
|
->hIncrBy($sessionId, 'writes', 1)
|
|
->expire($sessionId, min((int)$lifetime, (int)$this->_maxLifetime))
|
|
->exec();
|
|
} else {
|
|
$sessionId = self::SESSION_PREFIX . $id;
|
|
$redis = $this->_redis;
|
|
$redis->select($this->_dbNum);
|
|
$redis->hMSet($sessionId, array(
|
|
'data' => $this->_encodeData($data),
|
|
'lock' => 0, // 0 so that next lock attempt will get 1
|
|
));
|
|
$redis->hIncrBy($sessionId, 'writes', 1);
|
|
|
|
$redis->expire($sessionId, min((int)$lifetime, (int)$this->_maxLifetime));
|
|
//->exec();
|
|
//$redis->exec();
|
|
}
|
|
|
|
}
|
|
|
|
public function setName($name)
|
|
{
|
|
$this->_name = $name;
|
|
}
|
|
}
|
|
|