+ 2

PHP online/offline

Как сделать проверку онлайн ли пользователь или не онлайн на РНР? How to do checking is user online or offline? PHP

20th Dec 2017, 8:35 PM
BodyaBuilder
BodyaBuilder - avatar
4 Answers
+ 23
Соглашусь с @James16. Добавлю лишь одно, если необходимо проверять наличие пользователя онлайн без перезагрузки страницы, то нужен Javascript. Стоит реализовать AJAX запрос с определённым таймаутом.
20th Dec 2017, 9:27 PM
Igor Makarsky
Igor Makarsky - avatar
+ 9
You can't check if a user is online or not. You can email Sololearn if you want this feature at 👉 info@sololearn.com.
20th Dec 2017, 8:48 PM
Learnsolo
+ 3
Первым делом необходимо понять принцип работы "Кто онлайн". А принцип следующий: каждый пользователь, который не активен более заданного времени, выбывает из списка online. Каждый новый пользователь добавляется в список online. И этот список хранится в базе данных. Те, кто уже неплохо разбирается в PHP и MySQL, без проблем реализуют всё это. Однако, на всякий случай, распишу подробную инструкцию: Создать таблицу в базе данных со следующими полями:id - уникальный идентификатор каждой записи.user_id - уникальный идентификатор, соответствующий определённому пользователю. Другими словами, если у Вас есть регистрация, то в таблице с пользователями должен быть указан их id. Вот именно в это поле и необходимо помещать этот id.last_time - количество секунд прошедших с полуночи 01.01.1970 до последней активности пользователя. Это количество секунд легко получается с помощью функции time().На каждой странице сайта, на каждом скрипте, необходимо реализовать следующий алгоритм:Получить информацию об активности пользователя, вызвавшего этот скрипт. Если этот пользователь находится в таблице, то надо просто обновить поле last_time у него. Если его там нет, то необходимо добавить этого пользователяв таблицу.Удалить всех online-пользователейиз таблицы, у которых время неактивности превышает заданное, простым SQL-запросом. Всё, это весь алгоритм. Он, на самом деле, очень простой и самый частоиспользуемый. Что касается времени, через которое пользователь считается за offline, то здесь советую выбрать 30 минут. А сам принцип, надеюсь, стал понятен: каждый пользователь, который переходит на любую страницу сайта, вызывает добавление себя в список online(или обновление last_time, если он там уже был), а также удаление уже неактивных пользователей. Также вместо user_id можно использовать IP-адрес. Тогда можно реализовать, не сколько зарегистрированных пользователей, а сколько вообще людей находится на сайте. Я очень рекомендую реализовать этот алгоритм
20th Dec 2017, 9:21 PM
James16
James16 - avatar
+ 3
@Igor Спасибо! возьму на заметку :)
20th Dec 2017, 9:37 PM
James16
James16 - avatar