Я пытаюсь сделать то, что говорит «Х количество пользователей в данный момент просматривает эту страницу» через PHP. Как мне это сделать? Спасибо.Обнаружение пользователей в Интернете: PHP
ответ
Существует нет отказоустойчивого способа сделать это, но есть несколько вариантов.
- Сохраните последний раз, когда человек посетил базу данных. Если он находится в определенном пороге (скажем, 5 минут), они находятся в сети.
- Этот способ менее надежный, но иногда пинг (правильный термин?) сервер с AJAX, чтобы сказать, что вы все еще в сети. Это позволяет пользователю иметь страницу в течение длительного времени без выключения «онлайн-времени».
Вы даже можете использовать комбинацию из двух.
Если у вас много трафика, вы должны кэшировать первый вариант. Вы не хотите запускать SELECT * FROM users WHERE lastvisit > UNIX_TIMESTAMP() - 18000
для каждой загрузки страницы. Другим вариантом было бы запустить демон за каждую минуту или около того и сохранить онлайн-пользователей в отдельной таблице.
Примечание: предполагается, что вы действительно означает пользователей, когда вы это указали. Если вы хотите получить номер гостей, см. Ответ @ code_burgar.
Вы действительно не можете, потому что не знаете, когда кто-то перестает просматривать страницу.
- Создание таблицы базы данных, которая хранит:
- хэш IP пользователя и комбинации UserAgent
- Timestamp
- После каждого PageLoad, хранить хэш пользовательского IP и UserAgent комбинации вместе с током временная метка в базе данных
- База данных запросов для количества уникальных записей, имеющих временную метку, которая попадает в СЕЙЧАС() - диапазон X минут
- Показать приблизительное количество активных пользователей
Расширьте основную идею по
- Имея интервал породил AJAX вызов скрипта, который обновляет БД для учета пользователей, оставаясь на странице больше, чем X минут
Этот ответ будет для подсчета количества «гостей» в Интернете , – Jonah
Поскольку ОП не уточнил, что он считает «пользователями», ваш комментарий может быть или не быть релевантным :) –
В Интернете нет понятия «просмотр в настоящее время», потому что все происходит как непостоянные соединения. Самое близкое, что вы можете получить, это «X пользователей просматривали эту страницу в течение последних N секунд» (и если вы выберете значение N, которое достаточно мало, вы можете сказать, что это в значительной степени эквивалентно).
Тогда, чтобы пользователь A данные представления, основанные на действиях пользователя B, в PHP, вы должны иметь некоторое постоянное хранилище данных, как правило, в качестве базы данных, как MySQL (но Memcached или XCache может работать также , если вы действительно не беспокоитесь о потере данных при сбое сервера).
Просто напишите такие элементы, как «пользовательский X-просмотр страницы Y в момент времени Z», в постоянное хранилище, а когда отображается страница Y, запросите хранилище для всех видов страницы Y в последние N секунд и подсчитайте номер различных пользователей.
В SQL:
INSERT INTO visits (user, page, time) VALUES (?,?,NOW())
SELECT COUNT(DISTINCT user) FROM visits
WHERE page = ? AND time < NOW() - INTERVAL 10 SECONDS
Вы могли бы иметь пользователь сказать серверу «Я по-прежнему просмотра», подав запрос AJAX на регулярной основе (или с небольшой iframe
на странице, которая перегружает себя через каждые несколько секунд без JavaScript).
+1 для идеи
вы можете прослушать закрыть событие браузера в javascript, чтобы обрабатывать близко (хотя, когда браузер падает, вы вернулись к квадрату 1) – Alfred
@Alfred: это, и я не думаю, что IE почитает 'onbeforeunload'. Но, как можно пожелать, можно использовать как можно больше подобных решений. – Jonah
Создать переменную сеанса со временем:
$_SESSION['time']=time();
$time=time();
$query="INSERT INTO `online`(`name`, `time`)VALUES ('$name','$time')";
**// insert the time and username into the DB..**
if(time() - $_SESSION['time'] >=60)
**//check for ths condition if the user is available do the same thing again**
$_SESSION['time']=time();
$time=time();
$query="INSERT INTO `online`(`name`, `time`)VALUES ('$name','$time')";
Хотя извлекая пользователей онлайн:
$t=time();
// this will help u to remove the records that are not useful for u.
// **thus helping you to use less space on your database**
mysql_query("DELETE from online WHERE '$t'-time >60");
Наконец, выполните: mysql_query ("SELECT * FROM онлайн");
- 1. Отслеживание пользователей в Интернете
- 2. Обнаружение мобильных браузеров в Интернете?
- 3. На SESSION_DESTROY уменьшает количество пользователей в Интернете в PHP
- 4. Обнаружение скорости в Интернете в быстром
- 5. Обнаружение драйверов пользователей С веб-сайта php
- 6. Sails.js. Как подсчитывать пользователей в Интернете?
- 7. [PHP] Как я могу подсчитать пользователей в Интернете и пользователей вошел в систему, какой метод?
- 8. обнаружение пользователей с расширением hola
- 9. Обнаружение несанкционированных имен пользователей
- 10. Обнаружение кранов пользователей
- 11. Обнаружение пользователей из браузера
- 12. Обнаружение пользователей предыдущий домен
- 13. Обнаружение работы в Интернете или нет в Кордове Ionic Framework
- 14. Обнаружение быстрого переключения пользователей Linux
- 15. Как ограничить обнаружение пользователей 1?
- 16. iOS: обнаружение пользователей приложений около
- 17. Обнаружение пользователей, которые оценили пост ранее
- 18. Обнаружение аномалий в разрешениях доступа пользователей
- 19. Всплывающее обнаружение перед регистрацией пользователей в
- 20. Запуск приложения PHP в Интернете в Apache
- 21. Как FWRITE в Интернете в PHP
- 22. Обнаружение палиндрома в php
- 23. Обнаружение лиц в PHP
- 24. Обнаружение register_argc_argv в PHP
- 25. Как получить пользователей, которым понравились мои страницы в Интернете?
- 26. Как проверить зарегистрированных пользователей в Интернете с помощью Zend Framework
- 27. Получение списка пользователей в Интернете и сохранение переменной? socket.io
- 28. Каковы некоторые превосходные примеры форм регистрации пользователей в Интернете?
- 29. Lync UserEndpoint появляется в Интернете для пользователей, но нельзя назвать
- 30. Есть ли в Интернете PHP IDE?
Если у вас есть массовое движение, это не очень хорошая идея. –
Этот вопрос должен ответить на ваш вопрос: http://stackoverflow.com/questions/890820/find-out-how-many-users-are-online-in-php – thejh