Если у вас есть сайт с возможностью регистрации пользователей, и нужно выводить статус пользователя, то самый простой способ:
1) записывать в базу данных идентификатор пользователя и время последнего входа на страницу.
2) через определенный интервал времени сравнивать время последнего онлайна с текущим временем и удалять тех, кто не был на странице определенный промежуток времени.
Для этого создадим отдельную таблицу. Допустим назовем ее user_online. Колонки user_id типа int и колонка date типа datetime.
Напишем функцию, которая должна срабатывать, при входе пользователя на страницу.funtion set_user_online($user_id){Ну тут все понятно. Если есть запись, то обновляем дату, иначе добавляем запись. Функция NOW() возвращает текущее время.
$query = mysql_query("SELECT count(*) AS count FROM user_online WHERE user_id = ".intval($user_id));
$query = mysql_fetch_assoc($query);
if($query['count']>0)
$b = mysql_query("UPDATE user_online set date = NOW() where user_id = ".intval($user_id));
else
$b = mysql_query("INSERT INTO user_online (user_id, date) values ('".intval($user_id)."', NOW())");
}
}
Дальше надо сверять время в базе и текущее, и удалять записи, у которых интервал больше определенного значения. У меня будет 10 минут.function check_status(){Тут используется функция UNIX_TIMESTAMP, которая возвращает количество секунд прошедших с 1970-01-01 00:00:00 GMT.
$query = mysql_query("DELETE FROM user_online WHERE (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(date))>600");
}
Теперь нужно запускать эту функцию. Можно воспользоваться cron’ом – система для автоматического запуска программ и скриптов на сервере в определённое время.
Для выполнения php скриптов из cron необходим бинарный интерпретатора PHP. Для управления расписанием запсука команд, нужно ввести ‘crontab -e’, которая откроет в текстовом редакторе файл конфигурации cron.
Пример конфигурационного файла.
# m h dom mon dow command
*/10 * * * * php /var/www/site/cron/status.php
Тут m h dom mon dow command – это минуты часы день месяц день_недели имя_пользователя команда. Описывать все про cron я не буду, да и в инете можно найти.
Скажу только, что * – любое значение, / – периодичность. Например, ‘*/10 в поле «минуты» означает «каждые 10 минут», а * в поле часы означает «в любой час». Дальше команда php /var/www/site/cron/status.php запсукает скрипт, в которой находится вызов функции check_status().
Ну вот и все. Все шишки админу





