Доброго времени суток. Нужно сохранить данные сессии в БД Redis. Успешно подключил predis (через Composer), "хелловорд" тесты прошли на ура, но вот как хранить сессии в базе - не пойму. Подскажите, пожалуйста.
Доброго времени суток. Нужно сохранить данные сессии в БД Redis. Успешно подключил predis (через Composer), "хелловорд" тесты прошли на ура, но вот как хранить сессии в базе - не пойму. Подскажите, пожалуйста.
Yii 1.1 или 2.0?
1.1.16
Александр, я надеюсь, хоть Вы мне поможете!
Модифицирую стандартную LoginForm модель:
Если будете смотреть код, сразу скажу, что авторизация у меня без пароля. Если юзер уже авторизован и пытается еще раз - метод возвращает false. По истечении сессии все данные о юзере (session[‘username’], хеш редиса) уничтожаются.
public function login()
{
$redis = new Predis\Client();
if(!$redis->exists($this->username)) //Если юзер не был авторизован
{
$duration = 3600*24; //для сессии и уничтожения $redis->exists($this->username)
Yii::app()->session['username'] = $this->username;
//тут нужно сохранить phpsession в redis на $duration секунд
//состояние юзера храню в redis, хешем
$redis->hmset($this->username, array(
'inClass' => 1,
'handUp' => 0,
)
);
$redis->expireat($this->username, $duration); //удалить данные о юзере по истечении
return true;
}
else
return false;
}