Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2015, 00:28
Avatar de Cedyk
Cedyk
 
Fecha de Ingreso: abril-2014
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 10 años
Puntos: 0
Actualizar tabla con sesiones cada x cantidad de tiempo.

Buenas noches ante todo, muestro el método de mi clase general para que se entienda el problema.

Código PHP:
function is_logged() {
    
mysqli_report(MYSQLI_REPORT_OFF);
    if (isset(
$_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
        echo 
"Tengo una session iniciada: ".$_SESSION['user_id']."<br>";
        
$ss_query "SELECT * FROM site_session WHERE user_id=".$_SESSION['user_id'];
        
$ss_result $this->mysql[1]->query($ss_query);
        if(
$ss_result->num_rows == 1) {
            
$site_session $ss_result->fetch_array(MYSQLI_ASSOC);
            echo 
"Tengo una tabla de Sessiones: ".$site_session['session_id']."<br>";
                    
            
$ultima_actividad strtotime($site_session['last_activity']);
            
$tiempo_actual strtotime('now');
            
$diferencia $ultima_actividad $tiempo_actual;
            
$diferencia_minutos intval($diferencia 60);

            if (
$diferencia_minutos 15) {
                echo 
"cierro session<br>";
                return 
False;
            } else {
                echo 
"Hago el update";
                
$add_time strtotime($site_session['last_activity']) + 900;
                
$new_date date('Y-m-d H:i:s'$add_time);
                
$ss_update "UPDATE site_session SET last_activity='$new_date' WHERE user_id=".$_SESSION['user_id'];
                
$this->mysql[1]->query($ss_update);
                echo 
"Le agregué tiempo a la tabla<br>";
                return 
True;
            }
        }
    } else {
        echo 
"No tengo una tabla de Sessiones.<br>";
        return 
False;


Aclaraciones:
1.- "$this->mysql[1]" hace referencia a una lista, dónde retorno la conexión en otro método.
2.- Los "echo" que hay por todo el método estan a modo de debug.


Introducción:

Al iniciar session se genera un registro en una tabla que almacena los usuarios conectados guardando el DATETIME de cuando hizo login y el DATETIME de la "última actividad". Al inicio de la carga de mi sitio web, se llama a este método que "chequea si el usuario está logeado o no".

Problema:

Cada vez que la página se refresca, se agregan 15 minutos a la tabla de session activa de manera ilimitada haciendo que la session sea tan larga que no expira.
De que manera podría chequear que si el tiempo actual es mayor a 15 minutos desconecte el usuario, pero que sino solo haga el update si ya se actualizó anteriormente o similar.

Agradezco las ideas o la ayuda :)