¿Restar time () de la tabla mysql para la última actividad?

He creado un script de usuario en línea simple en php, hasta ahora se mantiene así.

$online_users = time() - 900;

$q = $dbc -> prepare("SELECT * FROM accounts WHERE online > ? ORDER BY username");
$q -> execute(array($online_users));
$result = $q -> rowCount();

En la página de cada miembro, la fila "en línea" se actualiza con la hora actual () con cada clic del usuario.

Como puede ver $ online_users, es la hora actual menos 15 minutos. Luego puedo averiguar si han estado activos en el sitio en los últimos 15 minutos y hacer un ciclo while para mostrarlos a todos.

Mi pregunta es, ¿cómo puedo saber el tiempo exacto en segundos que no han estado activos para poder mostrar un mensaje que diga;

'Último activo hace 45 segundos' o 'Último activo hace 14 minutos'

Espero haber explicado esto lo suficientemente bien y gracias :)

preguntado el 27 de agosto de 11 a las 20:08

2 Respuestas

Creo que podría haber leído mal su pregunta, pero esto debería ser tan simple como restar el tiempo de la última actividad (en su base de datos) del tiempo actual.

$inactive_time = time() - last_activity;

Luego, podría determinar si mostrar "segundos" o "minutos" al ver si "$ inactive_time" es mayor que "60".

Respondido 28 ago 11, 00:08

Prueba este:

$resulted_account = $q->fetchAll();

foreach($resulted_account as $account) {
    $inactive_time = $account['online'] - $online_users;
    if ($inactive_time < 60)  {
        echo "Last active $inactive_time seconds ago";
    } else {
        echo "Last active" .date("i", $inactive_time) . "minutes ago";        
    }
}

Respondido 28 ago 11, 00:08

esto funciona error con algunos errores en él, pero definitivamente es mejor de lo que tenía gracias - carlgcoder

@carlgcoder No puedo verificar este código, así que este es el único ejemplo de cómo puede hacerlo. - Andrej Ludinovskov

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.