Как узнать время начала и окончания сеанса? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть задача узнать время начала и окончания сеанса в Laravel.Должен ли я использовать Laravel Websockets для выполнения этой задачи, может быть, Pusher?В какие технологии мне стоит углубиться?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Я думаю, вам не нужно переходить на Websockets или Pusher, вам просто нужна простая функция setInterval для отображения времени окончания сеанса.И вы получите время сеанса из файла session.php в папке конфигурации 'lifetime' => 120,, здесь 120 - минуты.

var sessionOutTimeInSeconds = 120 *60;
setInterval(function(){ 
    sessionOutTimeInMinutes -= 1;
}, 1000);

var sessionOutTimeInMinutes = 2;// here your can set 120
var sessionOutTimeInSeconds = sessionOutTimeInMinutes * 60;
var timeStr = 'Expire in 120 Minutes';
var alertBefore = 1;
    var intervalId = setInterval(function(){ 
        sessionOutTimeInSeconds -= 1;
        sessionOutTimeInMinutes = parseInt(sessionOutTimeInSeconds/60);
        timeStr = '';
        // **here you can do any stuff when you got session out. may be you can redirect go to home page to go to login page.** 
        if(sessionOutTimeInSeconds > 0 ){
        if(sessionOutTimeInMinutes >= alertBefore){
            timeStr = '<span style="color:green;">';
          }else{
            timeStr = '<span style="color:red;">';
          }
          timeStr += 'Expire in '+ sessionOutTimeInMinutes + ' Minutes ' + (sessionOutTimeInSeconds%60) + ' Seconds';
        }else{
           //alert('Session Expired.');
           //clearInterval(intervalId);
           timeStr = '<span style="color:red;">';
           timeStr += 'Session Expired '+ (-1)*sessionOutTimeInMinutes + ' Minutes ' + (-1)*(sessionOutTimeInSeconds%60) + ' Seconds ago.';
        }
        
        timeStr += '</span>';
        document.querySelector('#sessionout').innerHTML = timeStr;
    }, 1000);
<div id="sessionout"></div>
0 голосов
/ 19 сентября 2019

чтобы получить время начала сеанса:

if (!isset($_SESSION['started'])) {
    $_SESSION['started'] = $_SERVER['REQUEST_TIME'];
}

Я не уверен, как сделать время окончания сеанса, но, возможно, вы можете использовать ту же логику для этого.Может быть, этот поток может помочь в этом: Когда заканчивается сессия PHP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...