Если у вас есть сайт с возможностью регистрации пользователей, и нужно выводить статус пользователя, то самый простой способ:
1) записывать в базу данных идентификатор пользователя и время последнего входа на страницу.
2) через определенный интервал времени сравнивать время последнего онлайна с текущим временем и удалять тех, кто не был на странице определенный промежуток времени.
Для этого создадим отдельную таблицу. Допустим назовем ее user_online. Колонки user_id типа int и колонка date типа datetime.
Напишем функцию, которая должна срабатывать, при входе пользователя на страницу.
function set_user_online($user_id){ $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())"); } }
Ну тут все понятно. Если есть запись, то обновляем дату, иначе добавляем запись. Функция NOW() возвращает текущее время.
Дальше надо сверять время в базе и текущее, и удалять записи, у которых интервал больше определенного значения. У меня будет 10 минут.
function check_status(){ $query = mysql_query("DELETE FROM user_online WHERE (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(date))>600"); }
Тут используется функция UNIX_TIMESTAMP, которая возвращает количество секунд прошедших с 1970-01-01 00:00:00 GMT.
Теперь нужно запускать эту функцию. Можно воспользоваться 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().
Ну вот и все. Все шишки админу
Админ можешь написать здесь, либо отправить мне на мыло как сделать вывод онлайн/оффлайн сервера? Есть сервер с динамическим ip, но с постоянным адресом, к примеру site.ru. Мне нужно на сайте вывести статус, когда будет либо пинговаться этот сервер, либо когда будет пинговаться порт, на котором стоит программа – 19132. Лучше всего идея с портом. Могу на сервер поставить скрипт, сервер стоит на Linux, последняя версия Debian(сервер мой).
а зачем придумывать велосипед, помоему полно сервисов мониторинга доступности и работоспособности сайтов, с уведомлением на емейл и тд… писать конкретные сервисы не стану думаю по запросу мониторинг доступности сайта найдешь не мало вариантов
Чувак, большое спасибо!) Очень помогло)