SlavaK, молодец.
делать показ "кто сейчас онлайн" с помощью сессий - это стрелять из пушек по воробьям.
Так имеет смысл только если сессии уже используются, а сессии имеет смысл использовать на весьма ограниченном количестве сайтов и весьма и весьма подумав - сколько они вреда принесут ,а сколько - пользы.
Ну, а в чате-то и вовсе просто. странно, что ты сам не догадался выкидывать всех, кто не обновил страницу за время, которое у тебя рефрешится чат, плюс небольшой таймаут.
А вот тебе и функция, кстати, я тут на соседнем форуме написал.
Правда, тут в качестве идентификатора юзера используется его IP - только заменить его на имя в чате - и всею
function online($timeout=180) {
mysql_query("DELETE FROM session WHERE time < unix_timestamp()-$timeout");
mysql_query("REPLACE session VALUES (\'".getenv("REMOTE_ADDR")."\',unix_timestamp())");
$result = mysql_query("SELECT COUNT(*) FROM session");
$count = mysql_fetch_array($result);
return $count[0];
}
Наверняка у тебя получилось сложнее
ripper, таймаут в 30 минут может поставить либо полный, клинический идиот, либо патологический лжец.
Ибо в 10 раз превысить реальное среднее время нахождения на странице, и даже умудриться перекрыть стандартное время жизни сессии, которое рассчитано на то, что человек гарантироваенно ушел с сайта - это надо быть фантастически жадным.