Ti do questo suggerimento. La cosa mi è venuta in mente al volo dovrai continuare tu sulla strada intrapresa.
Fai eseguire una query ogni volta che l'utente entra su una pagina del tuo sito, query che andrà ad uppare un campo del database, relativo ad ogni utente e che chiamerò lastaction.
Tale update consistera semplicemente nel inserire in tale campo il valore time();
Codice PHP:
<?php
$now=time();
$query=mysql_query("UPDATE utenti SET lastaction='$now' WHERE id='$_SESSION[id]'");
?>
Nella pagina di visualizzazione dei profili recupererai questo valore per ogni utente tra i tuoi amici (inner join o doppio while, come meglio credi).
Dopodichè volendo mostrare gli utenti connessi negli ultimi 15 minuti farai un semplice controllo tra la data estratta e l'attuale data:
Codice PHP:
<?php
$ora=time();
//estrazione dei dati
$lastaction=$row['lastaction'];
$diff=$ora-$lastaction;
if ($diff<="900") // i secondi corrispondenti a 15 minuti
{
echo "Utente online";
}else{
echo "Utente offline";
}
A questo punto puoi fare tante personalizzazioni: esempio prendere il valore di $lastaction, dividerlo per 60, arrotondarlo e per esempio applicare un effetto tipo ultima azione eseguita $tot minuti fa dove $tot è il valore che ti sei calcolato.
Naturalmente il mio è uno spunto, procedi come meglio vuoi.