В настоящее время логика посетителей онлайн в PHP - PullRequest
1 голос
/ 14 декабря 2011

Это может быть очень легко сделать, но я очень смущен этим.

По сути, я хочу узнать количество людей, которые в настоящее время просматривают мой сайт.Проблема в том, что я не могу считать сессии.Многие из них созданы для разных целей.(например, $ _SESSION ['age'] для пользователей, которые вошли в систему.)

Также есть люди "logged_in" и "not_logged_in".

Короче говоря, как я могу посчитатьпользователи на моем сайте самым профессиональным способом?

Ps.Обратите внимание, что я буду запускать функцию каждые 1-5 минут, получать сумму, хранить ее для использования в качестве кэша.Через 5 минут кеш будет заменен снова и тд.Следовательно, подключение БД будет возможным, если вы думаете, что это будет наиболее профессиональным способом.

1 Ответ

2 голосов
/ 14 декабря 2011

Одной из проблем является то, что ваш PHP не знает, когда ваш пользователь закрывает браузер.

Я сделал нечто подобное с комбинацией поля "last_used" в базе данных пользователей.(timestamp / datetime) и функция «heartbeat» (jscript), которая регулярно отправляет команду «I'm still alive» на сервер (каждые x секунд), где затем обновляется поле last_used.Это не сайт с большим трафиком, но он делает работу очень надежной.

Затем просто посчитайте количество пользователей, у которых в базе данных очень текущий пульс:

SELECT COUNT(*) 
FROM your_user_table 
WHERE last_used > TIMESTAMPADD(NOW(), INTERVAL -30 SECOND)

Вы надеваетеДля этого не нужна пользовательская таблица, вы также можете использовать сеансовую таблицу.Такой механизм можно затем использовать и для других функций, таких как предоставление пользователям новых сообщений на лету и тому подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...